TCP && IP.

InternetProtocol

数据包结构图

IP_DATAPACKET

各字段说明

字段命 位数 说明
version 4bit 版本号
headerLength 4bit 表示首部长度占多少个32bit数量,所以,最大首部长度为15*4byte(32bit) = 60 byte;
typeOfService(TOS) 8bit 服务类型
totalLength 16bit 整个ip数据报的长度,子节为单位,所以ip数据报最大长度为0xFF(65536)byte
identification 16bit 16位标识
fragmentOffset 16bit 片偏移 3bit标识 + 13bit片偏移
TTL 8bit 生存时间,数据包最多可以经过最多的路由数,TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机
protocol 8bit 协议
checksum 16bit 首部校验和
source 32bit 源地址
destination 32bit 目的地址

头部长度合计: headerLength*4 byte


  • version: 4bit

  • headerLength: 4bit(15),表示首部长度占多少个32bit数量,所以,最大首部长度为15*4byte(32bit) = 60 byte;

  • typeOfService(TOS):8bit, 服务类型

  • totalLength:16bit,整个ip数据报的长度,子节为单位,所以ip数据报最大长度为0xFF(65536)byte

  • identification:16bit,16位标识,

  • fragmentOffset:16bit,片偏移 3bit标识 + 13bit片偏移

  • TTL :8bit,生存时间,数据包最多可以经过最多的路由数,TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机

  • protocol:8bit,协议

  • checksum: 16bit,首部校验和

  • source:32bit,源地址

  • destination:32bit,目的地址

    ----
    

主动关闭的一方会进入TIME_WAIT,此时处于TIME_WAIT状态下的端口是不能用来LISTEN
SO_REUSEADDR 开启这个选项后,即使处于TIME_WAIT状态的peer(ip:port),也可以重新使用

TCP_NO_DELAY: 默认关闭
Nagle算法(拥塞控制算法)
发送方发送的数据大于等于MSS(Maximum segement size) = MTU - IP_HDR - TCP_HDR(tcp双端建立连接后协商的每次传输可接收最大字节数)