计算机网络

计算机网络体系结构


InternetArc.png

1.五层协议

  • 应用层:为特定的应用程序提供数据传输服务,如HTTP,DNS.数据单位为报文.
  • 传输层:为进程提供通用数据传输服务.如TCP,UDP.TCP主要提供完整性服务,UDP主要提供及时性服务.
  • 网络层:为主机提供数据传输服务.
  • 数据链路层:针对主机之间的数据传输服务.
  • 物理层:在传输媒介(网线,光纤等)上传输 数据比特流.

2.OSI

  • 表示层:数据压缩,加密及数据描述.
  • 会话层:建立和管理会话
    五层协议无表示层和会话层,而是将这些功能留给应用程序开发者处理.

3.TCP/IP

四层,相当于五层协议中数据链路层和物理层合并为网络接口层.

  • 应用层
  • TCP/UDP
  • IP
  • 网络接口层(子网层) [物理层和数据链路层]

TCP-IP.png

TCP/IP协议族

TCP-IP2.png

网络层[IP,ARP,ICMP,ICMP]


  • 地址解析协议ARP(Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

ip.png

1.IP数据报格式

IP数据报格式.png

2.IP地址编址方式

  • 分类
    由两部分组成,网络号和主机号.不同分类具有不同的网络长度,并且是固定的.

IP地址::={<网络号>,<主机号>}

IP分类.png

  • 子网划分

主机号拿出一部分作为子网号,将两级IP分为三级IP

1
2
3
4
5
6
7
8
9
通过在主机号拿出一部分作为子网号,把两级IP地址划分为三级IP地址
IP地址::={<网络号>,<子网号>,<主机号>}
要使用子网,必须配置子网掩码.一个B类地址的默认子网掩码为255.255.0.0
11111111 11111111 0000000 00000000

如果一个B类地址的子网占2个比特,那么子网掩码为255.255.192.0
11111111 11111111 1100000 00000000

外部网络看不到子网的存在

传输层


网络层只把分组发送到目的主机,但是真正通信的并不是主机而是 主机中的进程 。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。

UDP和TCP的特点

  • UDP是 无连接的,尽最大可能交付, 没有拥塞控制,面向报文,支持一对一,一对多,多对一和多对多的交互通信.
  • TCP是 面向连接的,提供可靠的交付,有流量控制,拥塞控制,提供全双工通信,面向字节流.每一条TCP连接只能是 点对点的(一对一的).

TCP的三次握手

TCP三次握手.png

A为Client,B为Server

  • Server处于监听状态,等待客户的连接请求
  • Client向Server发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号x
  • Server收到连接请求报文,如果同意建立连接,则向Client发送连接确认报文,SYN=1,ACK=1,确认号为x+1,同时也选择一个初始的序号y
  • Client收到Server的连接确认后,还需向Server发出确认,确认号为y+1,序号为x+1
  • Server收到A的确认后,建立连接
三次握手的原因
1
2
3
为了防止失效的连接请求到达服务器,让服务器错误打开连接

客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

TCP的四次挥手

TCP四次挥手.png

  • Client发送连接释放报文,FIN=1
  • Server收到之后发出确认,此时TCP属于半关闭状态,Server能向Client发送数据,但是Client不能向Server发送数据
  • 当Server不再需要连接时,发送连接释放报文,FIN=1
  • Client收到后发出确认,进入TIME-WAIT状态,超时后释放连接
  • Server收到Client的确认后释放连接
四次挥手的原因

客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。

1
2
3
4
5
6
7
TIME_WAIT

客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:

确保最后一个确认报文能够到达。如果 Server 没收到 Client 发送来的确认报文,那么就会重新发送连接释放请求报文,Client 等待一段时间就是为了处理这种情况的发生。

等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

计算机网络