[TCP] TCP协议族的学习 and TCP协议
天南第二剑修 人气:11、TCP协议族这个大家庭,每个协议在OSI5层模型中所处的位子
其中,网络层里的 ICMP = Internet Control Message Protocol,即因特网控制报文协议,
IGMP = Internet Group Manage Protocol,即因特网组管理协议,
IP = Internet Protocol,就是因特网协议的意思,
链路层的 ARP = Address Resolution Protocol,是地址解析协议,下文会有详细描述。
RARP = Reverse Address Resolution Protocol,是反向地址转换协议,
2、IP协议
IP协议的讲解,我放到另一篇讲UDP协议的内容里去讲,这里就不讲了。估计是这周星期六写。
3、ARP协议(地址解析协议)
作用:先看右图中的源IP地址,它的长度是32bit,
再看右图中的源MAC地址,它的长度是48bit,
ARP协议的作用就是,在32bit的IP地址和48bit的MAC地址间建立起映射关系。类似于“看到A,就想到B”这种句子。
分为:ARP协议分为ARP请求和ARP应答,如右图
为了方便记忆和理解,可以将图2和图3进行对比,发现图3的“以太网首部”跟图2里的“以太网帧头”部分长得有点像。
“帧类型”:长度为2个字节=16位,指的是后边数据的类型,但是对于ARP请求、ARP应答来说,这个字段的内容固定写为0x0806,
0x0806而换成2进制就是0000 1000 0000 0110。
“硬件类型”:长度为2个字节=16位,表示硬件地址类型,而对于以太网地址的话,该字段为1,所以我估计是0000 0000 0000 0001。
“协议类型”:长度也是2个字节=16位,表示协议地址类型,如果它等于0x0800,那么它就代表的是IP地址。
那如果要表示MAC地址,该等于多少呢?
“硬件地址长度”:占1个字节,内容固定等于6,表示MAC地址的长度是6个字节=48位,所以我猜这个字段的二进制表示为0110。
“协议地址长度”:占1个字节,内容固定等于4,表示IP地址的长度是4个字节=32位,所以我猜这个字段的二进制表示为0100。
“op”:占2个字节,叫做操作字段,当op=1=(我猜)0000 0000 0000 0001,表示这是ARP请求。
当op=2=(我猜)0000 0000 0000 0010,表示这是ARP应答。
接下来的20个字节:20=6+4+6+4,是一组地址信息,看图3就懂。
4、ICMP(因特网控制报文协议)
ICMP用于传递错误报文或与路由器、主机交换关键信息。ICMP报文封装在IP数据报文内部,紧接IP首部之后,谈到格式,就把图1粘贴到这里,
上文说,ICMP报文封装在IP数据报文内部,紧接IP首部之后,看看图1,左边的上面花括号就是IP首部,那么ICMP报文就卸载“IP数据”里面。
格式:
“类型”:占1个字节=9位,0代表回显应答,简称应答,8代表回显请求,简称请求。
“代码”:占2个字节,不论是请求还是应答,这个地方都写0。
“校验和”:2个字节=16位,我猜指的是整个ICMP报文进行加和吧。图4整个这一块,叫做1个ICMP报文。
“标识符”:占2个字节=16位,一般设置为进程的ID号,以区分同一主机的多个PING实例。
“序号”:占2个字节=16位,从0开始,每个回显请求,都自动+1,而PING程序就是通过分析应答报文的序号,来判断是否出现了丢包、乱序和重复。
5、TCP协议
客户端:发出“连接请求”,
服务端:监听和“被动接受请求”,给出应答,
格式:
源、目的端口号:各占2个字节=16bit,它们用于区分不同的进程。通过双方的端口号和IP地址可以唯一确定一条TCP连接。
我猜比如QQ这个进程占用1号端口,微信占用2号端口。
TCP序号:占32bit=4个字节,它是TCP提供可靠字节流服务的基础。TCP序号标识每个TCP数据报文的首个字节,配合TCP数据报文长度可以定位TCP报文段内的任意
一个字节。当前的TCP报文长度确定后,下一个待发送TCP报文序号可由此算出,当序号增加到溢出时将再次从头开始。
今天先写到这儿了,上床去了。2019年11月19日23:35:17
加载全部内容