TCP/IP
IP数据报格式
版本 4位 ipv4 /ipv6
首部长度 4 位 最常用的首部长度是20 字节即0101(5)
首部最大长度即1111(15) 表明15个32位字长,1个32位字长是4字节IP数据报的数据部分必须是4字节的整数倍开始。
区分服务
总长度 16 位 最大长度 2的16 次方减一 即 65535字节
标识(identification)16位ip软件在存储器中维持一个计数器 每产生 一个数据报计数器加一 并将赋给标识字段 但标识并不是序号 因为IP 是无服务的 数据报不存在按序接受的问题。
标志(flag) 三位 但目前前两位有意义。 最低位记为MF(More Fragment)MF=1 表示还有分片 MF=0 表示已是若干数据报片中的最后一个。中间位记为DF(Don't Fregment) 不能分片 只有DF=0 才允许分片。
片偏移 13 位 每个分片的长度一定是8字节(64位)的整数倍。
生存时间 8 位 TTL (Time To Live) 后来称为跳数限制 名称不变 路由器每次转发数据报TTL 减一 数据报能在互联网中 经过路由器的最大跳数为 255 若把TTL 设为一 则只能在本局域网中传送。
首部检验和 16 位 只检验数据报的首部,但不包括数据部分 因为 数据报每经过一个路由器 路由器都要重新检验,不检验数据减少工作量。 首部检验和不采用CRC 检验码。采用的是反码算术运算。
源地址 32 位
目的地址 32 位
TCP数据报
源端口 和目的端口 各 2 个字节
序号 占 4字节 范围[0,2 的32 次方-1] TCP 是面向字节流的 在每一个字节都按顺序标号。
确认号 四字节 期望收到对方下一个报文的第一个数据字节编号
若确认号=N 则表明: 到序号N-1为止的所有数据报都已正确收到
数据偏移 占 4 为
保留 占 6 位
紧急URG(URGent) 当URG=1时 表明紧急指针有效 告诉系统有紧急数据应尽快发送
确认ACK 仅当ACK=1时确认号有效 建立连接后所有传送的报文都必须把ACK 置为一。
推送 PSH
复位 RST 当RST=1时 TCP连接严重差错,必须释放连接,然后重新连接 。RST=1 还用来拒绝一个非法报文打开的连接。
同步SYN (SYNchronization) 当 ACK=0,SYN=1 表明这是一个连接请求报文。若对方同意连接 则响应报文中使SYN=1和ACK=1 SYN=1 就表示一个连接请求或链接接受报文。
终止FIN FIN=1 数据发送完毕。释放链接,
窗口 占 2 字节
检验和 2 字节
紧急指针 2 字节 紧急指针在 URG=1时才有意义。
选项 长度可变 最大40 字节 没使用选项时 TCP 首部 20 自节。
时间戳 10字节。
https://blog.****.net/tz_gg/article/details/52228944