网络编程基础篇

本片文章主要讲述网络的基本概念。
将多个节点通过特定的介质联系起来的一种关系。
以计算设备作为节点,通信线路作为介质的网络。

网络的概念

  • 什么是网络:将多个节点通过特定的介质联系起来的一种关系
    例如:铁路网、交通网、人际关系网
  • 计算机网络:以计算设备作为节点,通信线路作为介质的网络
  • 英特网:把许多网络连到一起的网络
  • 网络起源于美苏冷战,最初是美国国防部高级研究计划局的一个项目,后来转为民用

网络功能

  • 数据与信息的传输
  • 实现资源共享
  • 打破时空限制,优化资源配置

网络分类

1
局域网、城域网、广域网

网络性能衡量指标

  • 带宽:通信信道支持的最高数据频率(Mb/s, kb/s, Gb/s)
  • 传输速率:每秒传输多少个bit数据
  • 吞吐量:单位时间内通过某个网络的数据量
  • 时延:
    • 传输时延:发送数据时候,到完成发送
    • 传播时延:电磁波、电信号传输需花费的时间
    • 处理时延:网络数据交换节点存储、转发所必需的处理时间
    • 排队时延:网络节点队列分组、排队所经历的时间

常用概念

1
2
3
4
客户端:请求服务的一方
服务器:提供服务的一方
通信:数据传输过程
协议:数据组织、编码、传输、校验、解码的规则

网络通信要解决的几个问题

客户端 服务器
如何找到对方
查阅地址(DNS)
如何让对方联系自己
公布自己的网络地址
如何联系对方
主动敲门(发起网络连接)
如何让对方联系自己
开门迎客(监听、接收连接)
如何正确传输数据
通信协议
如何正确传输数据
通信协议
如何让对方理解自己的意思
应用协议
如何让对方理解自己的意思
应用协议
如何结束对话
关闭连接
如何结束对话
释放资源

协议

1
2
3
4
生活中的协议:汽车转向灯、交通信号灯
协议是一组规则,数据组织、发送、传输、解析的规则
协议由第三方机构事先指定,或通信双方约定
协议需要通信各方共同遵守,否则就无法完成正常通信

网络模型

OSI/ISO七层模型 –> 网络通信标准化流程
ISO(国际标准化组织)
OSI(开放系统互联模型)

OSI七层模型如下

1
2
3
4
5
6
7
应用层 : 提供用户服务,具体功能有程序体现
表示层 : 数据的压缩优化和加密
会话层 : 建立应用连接,选择合适的传输服务
传输层 : 提供传输服务,进行流量控制
网络层 : 路由选择,网络互连
链路层 : 进行数据交换,控制具体消息收发,链路连接
物理层 : 提供物理硬件传输,网卡,接口设置,传输介质

OSI七层模型优势:

1
2
3
建立了统一的网络工作流程 
每个层次功能清晰,各司其职
降低了耦合度,方便了开发流程

分层原则:

1
2
高内聚: 模块功能尽可能单一,不要相互掺杂
低耦合: 模块之间的关联影响尽可能少

四层模型 (TCP/IP模型)

1
应用层   传输层  网络层  物理链路层

将应用层,表示层,会话层统一为应用层,便于开发实践

五层模型

1
应用层   传输层  网络层  链路层  物理层

数据的传输流程

1
2
3
发送端由应用层逐层根据协议添加首部信息,最终在物理层实现发送
发送的消息经过中间多个节点转发到达目标主机
目标主机根据协议逐层解析首部,最终到达应用层获取数据

消息发送的流程

1
2
封装:每个层次接收上层传递的数据,加入本层的控制信息,传递给下一层
解封:每个层次接收下层传来的数据,读取并去掉控制信息,将数据送给上一层处理

数据包如何寻找路径

1
2
3
网络节点分配一个IP地址(全世界独一无二的)
数据包中,包含了数据的源地址、目标地址
根据路由表中记录的路径信息,将数据投递给下一站,循环直至数据送达对方

网络地址表示方式

网络主机: 在网络中标识一台主机的标志

1
2
3
4
5
本地使用 : 'localhost' 
'127.0.0.1'

网络使用 : '192.168.56.131'
'0.0.0.0'

ifconfig : 查看本地网络信息 (Unix, Linux)
ipconfig : 查看本地网络信息 (Windows)

IP地址 : 在网络上查找一台主机的网络位置

1
2
3
4
5
6
7
8
9
10
11
12
IPv4 : 点分十进制 192.168.1.2   每部分取值:0--255

IPv6 : 扩充地址的范围

ping [ip] : 网络连接测试

特殊IP
127.0.0.1 本机测试IP
0.0.0.0 本机自动获取能够使用的网卡IP
192.168.1.0 表达一个网段
192.168.1.1 表示网关地址
192.168.1.255 广播地址

域名 : 网络服务器的别名

1
方便记忆,表达一定的含义

端口号 port

1
2
3
4
5
6
7
8
9
端口号是网络地址的一部分,用于区分主机上不同的网络应用

在一个系统中应用监听的端口不重复

取值范围:
1 -- 65535
1 -- 255 一些众所周知的公共程序端口
256 -- 1023 系统应用端口
1024 -- 65535 自用端口

网络字节序 : 网络上数据传输的排列方式

传输层

面向连接的传输服务

基于TCP协议的数据传输

传输特征 :

提供可靠的数据传输,可靠性指的是传输。过程中无丢失,无失序,无差错,无重复

实现手段

在通信前需要建立通信连接,通信结束需要断开连接。

连接过程 (三次握手)

1
2
3
1. 客户端向服务端发起连接请求
2. 服务端收到客户端请求报文(消息序列号),回复报文 消息表示可以连接
3. 客户端收到服务端回复,再从发送报文最终建立连接

连接断开 (四次挥手)

1
2
3
4
1. 主动方发送报文提出断开连接
2. 被动方接收到断开请求,立即返回消息表示开始准备 断开
3. 被动方处理消息完毕,完成断开准备,再次发送报文 表示可以断开
4. 主动方收到断开指令,发送报文最终确认断开

适用情况

对数据传输有准确性的要求,传输文件较大;
需要确保传输可靠性。比如 : 网页获取,文件下载,邮件收发

面向无连接的传输服务

基于UDP协议的传输

传输特征

不保证传输的可靠性,数据传输不需要提前 建立连接

适用情况

网络情况较差,对传输可靠性要求不高。比如:网络视频,群聊,广播