网络协议 2.传输层

1.1 IP协议

1.版本

2.头长度,单位为4,最长15*4=60字节

3.服务类型。(不用)

4.总长度,16位,最多65535字节。

5.封包标识,每发送一个ip包,此值+1。

6.标志与片偏移。标志:共3位,第一位不用。第二位标识是否分片。第三位标识是否最后一片。

7.存活时间TTL。

8.高级协议。ICMP、TCP、UDP等。

9.校验和,只校验头部

10.11.IP地址

12.选项与填充。安全和处理限制、路径记录、宽松源站路由、严格源站路由。

2.传输层

2.1 TCP

2.1.1特点

  • 面向连接
  • 点对点
  • 可靠
  • 全双工
  • 面向字节流

2.1.2 TCP如何保证可靠传输

  • 确认和超时重传
  • 数据合理分片和排序
  • 流量控制
  • 拥塞控制
  • 数据校验

2.1.3 TCP首部

  • 1.2.端口号加ip报头的ip地址可以唯一确定一个TCP连接。

  • 3.序号。报文第一个数据的序号。

  • 4.确认号。希望收到的下一个序号。

  • 5.数据偏移。为报头长度。

  • 6.状态控制码。ACK SYN FIN。

  • 7.窗口。16位,表示窗口容量。

  • 8.校验和。TCP段校验和。

  • 9.紧急指针。表示紧急数据最后一个字节的序号。

2.1.4 滑动窗口

作用:让接收方来得及接收。

TCP创建连接的初始,B会告诉A自己的窗口大小。

快重传:收到3个冗余的ACK,重传丢失的数据。

2.1.5 拥塞控制

作用:防止注入过多的数据到网络中。

阈值ssthresh 窗口cwnd

慢开始:若cwnd < ssthresh, cwnd=cwnd*2。
若超时,ssthresh=cwnd/2,cwnd=1。

拥塞避免:若cwnd >= ssthresh,且正常运转,cwnd=cwnd+1

快恢复:3ack时,ssthresh=cwnd=cwnd/2。

2.1.6 TCP连接

为什么要3次握手。

  • 双方都要确认对方收到了自己发送的序列号。
  • 防止失效的连接请求传送到服务器端,因此产生错误。

2.1.7 TCP断开

为什么要4次挥手

  • 双方均确认对方收到自己的FIN请求,即收到对方的ACK信号。
  • TCP连接时,第二次握手中,同时发送了ACK和SYN。而TCP断开时则不能同时发送ACK和FIN。因为可能还有数据需要传输。等数据传输完后才会发送FIN请求。

  • 为什么TIME-WAIT要等待2MSL。
    1. 保证客户端发送的最后一个ACK能够到达服务器。若未达到可以进行重传,并重新计时。
    1. 防止已经失效的连接请求报文段出现在下次连接。 2MSL可使本连接持续的时间内产生的报文从网络中消失。