网络原理:报文头
网络上下五十年的技术,浓缩起来就是TCP/IP文化
TCP/IP协议的精华,就是报文头
读懂了报文头,就读懂了TCP/IP协议
TCP/IP的精神,就是有连接,又可靠的精神
细节暂不赘述,我们先通过报文头,给你一个提纲
|
内容 |
用于的TCP特性 |
第一行, |
源端口号,目的端口号,标识两端进程 |
端到端 |
第二第三行 |
序号ISN是当前报文的序号,确认号ack是你当前收到最新报文的序号加一 |
可靠协议,防止乱序/丢包 |
六个标识位 |
SYN,FIN,ACK与连接的建立和断开息息相关 |
有连接的协议 |
|
剩下的类似,都是用于限定这个报文的模式的 |
六个标识位都是用于控制包的状态的 |
窗口 |
还能收多少数据 |
拥塞控制 |
校验和,紧急针 |
知道是啥就行 |
|
|
|
|
上面是原创,下面是整理加总结。固定长度20字节+可变长度
源/目标端口 |
源端口、目标端口是用16位表示的 |
可推算计算机的端口个数为2^16个 |
***: |
表示本报文段所发送数据的第一个字节的编号。 |
|
确认号: |
表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。 |
|
数据偏移: |
表示TCP报文段的首部长度,共4位, |
它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。 |
URG: |
表示本报文段中发送的数据是否包含紧急数据。 |
=1时使紧急指针字段有效 |
ACK: |
表示是否前面确认号字段是否有效。 |
TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段 |
PSH: |
提示接收端应用程序应该立即从TCP接收缓冲区中读走数据, |
数据要提交给上层应用,而不是缓存起来 |
RST: |
RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃), |
必须释放连接,然后再重新建立连接。 |
SYN: |
在建立连接时使用,用来同步序号。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段 |
当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。 |
FIN: |
若FIN=1,告诉对方:“我的数据已经发送完毕,你可以释放连接了” |
|
窗口大小: |
表示现在允许对方发送的数据量, 也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量, |
达到此值,需要ACK确认后才能再继续传送后面数据, |
校验和: |
提供额外的可靠性 |
信息安全,密码校验 |
紧急指针: |
标记紧急数据在数据字段中的位置 |
只有当URG=1时才有效 |
MTU=MSS+IP Header+TCP Header
最大数据长度,大概是1460字节