TCP && IP.
InternetProtocol
数据包结构图

各字段说明
| 字段命 | 位数 | 说明 |
|---|---|---|
| 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:
4bitheaderLength:
4bit(15),表示首部长度占多少个32bit数量,所以,最大首部长度为15*4byte(32bit) = 60byte;typeOfService(TOS):
8bit, 服务类型totalLength:
16bit,整个ip数据报的长度,子节为单位,所以ip数据报最大长度为0xFF(65536)byteidentification:
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双端建立连接后协商的每次传输可接收最大字节数)