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

[TCP] TCP协议族的学习 and TCP协议的更多相关文章

  1. [转] 用协议分析工具学习TCP/IP

    一.前言 目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天.目前号称搞网的 ...

  2. 重识TCP/IP协议族与HTTP基础

    不忘初心 砥砺前行, Tomorrow Is Another Day ! 本文概要: TCP/IP协议族的网络分层 TCP三次握手四次挥手 Http简介 报文结构 Http的请求方法及状态码 常用的H ...

  3. <TCP/IP原理> (二) OSI模型和TCP/IP协议族

    1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...

  4. 第12章 网络基础(1)_网络分层和TCP/IP协议族

    1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须 ...

  5. OSI模型与TCP/IP协议族

    OSI模型与TCP/IP协议族 年之后,TCP/IP协议族逐渐成为占主导的商用体系结构,广泛应用于Internet中,并通过广泛的測试.而OSI模型从来没有被全然实现过. 一.OSI模型: OSI与I ...

  6. 网络基础之TCP/IP协议族

    一.TCP/IP协议族 1.什么是协议? 计算机与网络设备相互通信依赖于相同的方法,比如,双方通信基于何种语言等.而把通信所依赖的这一切方法统称为规则,而我们就把这种规则称为协议. 协议中存在各种各样 ...

  7. TCP/IP(八)之总结TCP/IP四层模型

    阅读目录(Content) 一.TCP/IP参考模型概述 1.1.TCP/IP参考模型的层次结构 二.TCP/IP四层功能概述 2.1.主机到网络层 2.2.网络互连层 2.3.传输层 2.3.应用层 ...

  8. 8.3 TCPIP协议族

    接下来我们要学习的内容是TCP/IP协议族.TCP/IP协议族在网络系统中是非常重要的.这一个协议族当中牵涉到许许多多的我们平常所用到的协议.TCP/IP呢它也有分层模型.然后我们讲到的就是三方面的内 ...

  9. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

随机推荐

  1. 安装Ubuntu时界面显示不全,无法点击continue按钮

    按住win键和鼠标左键即可拖动界面

  2. css3实现饼状图进度及环形进度条

    1 <!-- 饼图 --> <div class="pie"></div> <hr /> <!-- 环形图 --> &l ...

  3. java web项目下的lib和build path 中jar包问题解惑

    一.build path&WEB-INFO/lib介绍 build path:可以说是引用: WEB-INFO/lib:可以说是固定在一个地方: eclipse编译项目的时候是根据build ...

  4. vue系列---响应式原理实现及Observer源码解析(一)

    _ 阅读目录 一. 什么是响应式? 二:如何侦测数据的变化? 2.1 Object.defineProperty() 侦测对象属性值变化 2.2 如何侦测数组的索引值的变化 2.3 如何监听数组内容的 ...

  5. Eureka和zookeeper的比较

    什么是CAP? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不 ...

  6. 使用 git bisect 定位你的 BUG

    Git 是开发者的好帮手,今天跟大家分享的是用 git bisect 来找到你代码中的 bad commit . 背景 你可能遇到过这种情况, 昨天下班前把模块开发完了, 单元测试验证通过, git ...

  7. 函数进阶(三) day14

    目录 昨日内容 迭代器 可迭代对象 迭代器对象 for循环原理 三元表达式 列表推导式 字典生成式 zip 生成器表达式 生成器 yield 递归 今日内容 匿名函数 内置方法 掌握 了解 异常处理 ...

  8. linux端口查询

    常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务.守护进程.和程序所使用的最常见的通信端口.该列表还可以在 /etc/services 文件中找到.要查看由互联网号码分派局(IANA) ...

  9. JdbcTemplate实现增删改查操作

    JdbcTemplate介绍 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JP ...

  10. Java基础(三十一)JDBC(1)常用类和接口

    1.Driver接口 每种数据库的驱动程序都应该提供一个实现java.sql.Driver接口的类.在加载某一驱动程序的Driver类时,它应该创建自己的实例并向java.sql.DriverMana ...