OSI参考模型

物理层

负责0、1比特流与电压的高低、光的闪灭之间的互换。

数据链路层

负责物理层面上互连的、节点之间的通信传输。将0、1序列划分为一个一个的数据帧传送给对方。每一个数据帧都包含了“报文首部”,即发送端地址、接收端地址、分组序号等。

网络层

将数据传输到目标地址,主要负责寻址和路由选择。

传输层

管理两个节点间的数据传输,只在通信双方节点上进行处理,而无需在路由器上处理。

会话层

负责通信的管理,建立和断开通信连接,以及数据的分割等。

表示层

负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能够处理的格式。具体来说,就是将设备固有的数据格式转换为网络标准传输格式。

应用层
负责每个应用的协议,为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输、电子邮件、远程登录等各种协议。

TCP/IP分层模型

硬件

负责数据传输,相当于物理层的设备。

网络接口层

利用以太网中的数据链路层进行通信,属于接口层,又称驱动程序

互联网层

使用IP协议,基于IP地址转发分包数据,相当于网络层,由操作系统提供。当数据包在发送途中发生异常时,需要给发送端一个异常通知,即为ICMP,它同时具有诊断网络健康状况的作用。之后利用ARP协议从分组数据包的IP地址解析出MAC物理地址。

传输层
作用是分清是计算机中哪些程序与哪些程序在进行通信,识别端口号,由操作系统提供。TCP是面向右链接的传输层协议,保证通信可达。UDP是面向无连接的传输层协议,不关注接收端是否收到数据。

应用层

将OSI中的会话层、表示层和应用层的功能都集中起来,由应用程序实现。

  • 浏览器与服务器端之间的通信协议是HTTP,传输数据格式是HTML,其中HTTP属于应用层协议,HTML属于表示层协议。
  • 电子邮件协议是SMTP,MIME是其扩展,可以发送声音、图像等信息,属于表示层协议。
  • 文件传输协议是FTP,在此过程中建立两个TCP连接,分别发出控制连接和数据连接。
  • 远程登录协议是SSH。
  • 网路管理协议是SNMP,属于应用层协议。

整体信息:

接收端MAC地址+发送端MAC地址+以太网类型+发送端IP地址+接收端IP地址+协议类型+源端口号+目标端口号+数据+循环冗余校验

IP协议(网络层)

网络层的主要作用是实现两个终端点对点的通信。

IP的主要作用是在复杂的网络环境中将数据包发送给最终的目标地址。

网络层与数据链路层的区别在于网络层是行程表,告诉了车票在哪个限定的区间内进行移动,而数据链路层就是车票,标有起始位置和终止位置,并作为移动的依据。即数据链路层只负责某一区间内的通信传输,网络层负责点对点通信,也就是负责限定在哪个区间。

IP属于面向无连接型,即使对端主机不存在,数据包还是会发送出去。IP只负责将数据发送出去,TCP负责保证数据的可靠性。

IPv4地址由32位二进制正整数来表示,分为每八位一组,每组以.隔开,将每组二进制数转换为十进制。

IP地址由网络地址和主机地址两部分组成,以子网掩码(对应网络地址的位置全为1,对应主机地址的位置全为0)区分(如今)。

IP地址分为四个级别(20世纪90年代),根据地址中从第一位到第四位的比特列对网络地址和主机地址进行区分,同时主机地址不能全为0(地址不可获知情况)或者全为1(广播情况):

  1. A类地址0开头 第1位到第8位是网络地址 0.0.0.0~127.0.0.0 主机容纳上限为16,777,214个
  2. B类地址10开头 第1位到第16位是网络地址 128.0.0.0~191.255.0.0 主机容纳上限为65,534个
  3. C类地址110开头 第1位到第24位是网络地址 192.0.0.0~223.255.255.0 主机容纳上限为254个
  4. D类地址1110开头 第1位到第32位是网络地址 224.0.0.0~239.255.255.255 没有主机地址,常用于多播

CIDR:在地址后面加上/数字代表了网络地址所占的位数,可以以任意长度分割两种地址,也可以将两个地址合并为一个网络。

私有地址和公有地址:在路由器或者服务器上设置全局IP地址,即公有地址,之后在每个终端设置私有地址。公有地址不能重复,而私有地址可以在互联网上重复,不能在本地重复。这种技术是NAT技术,将IPv4和NAT技术结合解决地址缺少的问题。

IPv6地址由128位二进制正整数来表示,前64位为网络地址,后64位为主机地址,以每16比特位一组,用冒号分隔,如果出现连续的零可省略,用两个冒号隔开,只允许出现一次两个连续的冒号,特点如下:

  1. IP地址扩大,路由控制表聚合
  2. 性能提升
  3. 支持即插即用功能
  4. 采用认证与加密功能
  5. 多播、Mobile IP成为扩展功能

DNS:管理主机名和IP地址之间对应关系的系统。

ARP:通过发送ARP请求包,包含发送目标的IP地址,ARP会被这同一链路上所有的主机和路由器进行解析,如果包中目标地址与自己的IP地址一致,则这个节点将自己的MAC地址塞入ARP响应包冰返回。即可以通过ARP从IP地址获得MAC地址

ICMP:确认网络是否正常工作,以及遇到异常情况时进行问题诊断。ping命令就是基于此功能的,功能如下:

  1. 确认IP包是否成功送达目标地址
  2. 通知发送过程中IP包被废弃的具体原因,通知消息使用IP进行发送
  3. 改善网络设置

DHCP:实现自动设置IP地址、统一管理IP地址分配(让即插即用变成了可能)。一般家庭使用宽带路由器充当此角色。

从DHCP服务器中获取IP地址的流程如下:

  1. 管理员在DHCP服务器上设置可分配的IP地址、子网掩码以及默认路由;
  2. DHCP服务器通知可以使用的网络设置;
  3. 通知想要使用在2中通知的设置;
  4. 通知允许3的设置。

之后就可以进行TCP/IP通信,当不需要IP时,可发送DHCP接触包。

NAT:用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术,实现用一个全局IP地址与多个主机的通信。

TCP/UDP(传输层)

TCP是面向连接的、可靠的流协议。

UDP是不具有可靠性的数据报协议。

通过5个信息来识别一个通信:

  • 源IP地址
  • 目标IP地址
  • 协议号
  • 源端口号
  • 目标端口号

TCP通过检验和、序列号(发送数据的位置,即发送到哪了,接下来该发送什么)、确认应答、重发控制、连接管理、窗口控制等机制实现可靠性传输。

TCP以段为单位发送数据,即最大消息长度(MSS),由两端主机之间计算得出。

确认应答

当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)。

重发控制

重发超时:每次发包时都会计算往返时间及其偏差,比这个总和稍大一点的值即为重发超时。(0.5秒的整数倍,6秒左右)

连接管理

数据通信前,通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。通信结束时会发送一个FIN包作为断开连接的请求。

一个连接的建立与断开,正常过程至少需要来回发送7个包才能完成。

三次握手

A->B SYN请求连接

B->A ACK针对SYN的确认应答,并SYN请求连接

A->B ACK对SYN的确认应答

通信连接完成……

四次挥手

A->B FIN请求断开

B->A ACK针对FIN的确认应答

B->A FIN请求断开

A->B ACK针对FIN的确认应答

窗口控制
在通信双方往返时间较长的情况下,控制网络性能。确认应答不再以段为单位,而是更大的单位。

窗口大小指无需等待确认应答而可以继续发送数据的最大值。

再没收到确认应答之前,所有数据发送的同时,会进入缓冲区,如果失败则重新发送,如果成功则将缓冲区中确认收到的信息清除。

UDP首部格式:源端口号、目标端口号、包长度、校验和。

当校验和不匹配时,所有接收结果都被抛弃。

TCP首部格式:源端口号、目标端口号、序列号、确认应答号、数据偏移、保留、控制位、窗口大小、校验和、紧急指针、选项、填充。