一、TCP协议族这个你们庭,每一个协议在OSI5层模型中所处的位子微信
其中,网络层里的 ICMP = Internet Control Message Protocol,即因特网控制报文协议,网络
IGMP = Internet Group Manage Protocol,即因特网组管理协议,spa
IP = Internet Protocol,就是因特网协议的意思,blog
链路层的 ARP = Address Resolution Protocol,是地址解析协议,下文会有详细描述。进程
RARP = Reverse Address Resolution Protocol,是反向地址转换协议,路由
二、IP协议it
IP协议的讲解,我放到另外一篇讲UDP协议的内容里去讲,这里就不讲了。估计是这周星期六写。io
三、ARP协议(地址解析协议)class
做用:先看右图中的源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就懂。
四、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程序就是经过分析应答报文的序号,来判断是否出现了丢包、乱序和重复。
五、TCP协议
客户端:发出“链接请求”,
服务端:监听和“被动接受请求”,给出应答,
格式:
源、目的端口号:各占2个字节=16bit,它们用于区分不一样的进程。经过双方的端口号和IP地址能够惟一肯定一条TCP链接。
我猜好比QQ这个进程占用1号端口,微信占用2号端口。
TCP序号:占32bit=4个字节,它是TCP提供可靠字节流服务的基础。TCP序号标识每一个TCP数据报文的首个字节,配合TCP数据报文长度能够定位TCP报文段内的任意
一个字节。当前的TCP报文长度肯定后,下一个待发送TCP报文序号可由此算出,当序号增长到溢出时将再次从头开始。
今天先写到这儿了,上床去了。2019年11月19日23:35:17