[TCP] TCP协议族的学习 and TCP协议

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

[TCP] TCP协议族的学习 and TCP协议

天南第二剑修   2019-11-19 我要评论

1、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

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们