[TCP] TCP协议族的学习 and TCP协议
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协议的更多相关文章
- [转] 用协议分析工具学习TCP/IP
一.前言 目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天.目前号称搞网的 ...
- 重识TCP/IP协议族与HTTP基础
不忘初心 砥砺前行, Tomorrow Is Another Day ! 本文概要: TCP/IP协议族的网络分层 TCP三次握手四次挥手 Http简介 报文结构 Http的请求方法及状态码 常用的H ...
- <TCP/IP原理> (二) OSI模型和TCP/IP协议族
1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...
- 第12章 网络基础(1)_网络分层和TCP/IP协议族
1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须 ...
- OSI模型与TCP/IP协议族
OSI模型与TCP/IP协议族 年之后,TCP/IP协议族逐渐成为占主导的商用体系结构,广泛应用于Internet中,并通过广泛的測试.而OSI模型从来没有被全然实现过. 一.OSI模型: OSI与I ...
- 网络基础之TCP/IP协议族
一.TCP/IP协议族 1.什么是协议? 计算机与网络设备相互通信依赖于相同的方法,比如,双方通信基于何种语言等.而把通信所依赖的这一切方法统称为规则,而我们就把这种规则称为协议. 协议中存在各种各样 ...
- TCP/IP(八)之总结TCP/IP四层模型
阅读目录(Content) 一.TCP/IP参考模型概述 1.1.TCP/IP参考模型的层次结构 二.TCP/IP四层功能概述 2.1.主机到网络层 2.2.网络互连层 2.3.传输层 2.3.应用层 ...
- 8.3 TCPIP协议族
接下来我们要学习的内容是TCP/IP协议族.TCP/IP协议族在网络系统中是非常重要的.这一个协议族当中牵涉到许许多多的我们平常所用到的协议.TCP/IP呢它也有分层模型.然后我们讲到的就是三方面的内 ...
- Android网络编程系列 一 TCP/IP协议族
在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...
随机推荐
- Web渗透之mssql差异备份getshell
简介 差异备份数据库得到webshell.在sql server 里dbo和sa权限都有备份数据库权限,我们可以把数据库备份称asp文件,这样我们就可以通过mssqlserver的备份数据库功能生成一 ...
- LSTM神经网络走读
0设计概述 RNN梯度爆炸和消失比较严重,RNN隐层只有一个状态h记录短期记忆,增加一个长期记忆状态c似乎就可以解决问题.
- WPF实现放大镜
这是一个之前遗留的问题.wpf里面有很多很多的东西,我以前用的真的只是其中很小的一个角落都不到. 需求背景:图片来源于相机拍摄,由于对像素要求,拍出来的图像素比较高,原图尺寸为30722048,以目前 ...
- Arduino学习笔记⑦ EEPROM断电保存数据
1.前言 EEPROM,叫做电可擦可编程可读寄存器(是不是觉得好官方,不知道是什么鬼?反正我也一脸懵逼),只需要知道这是一种断电后数据不会丢失的存储设备,可以用来应对需要做记录做保存的场合.简 ...
- 百万年薪python之路 -- Socket
Socket 1. 为什么学习socket 你自己现在完全可以写一些小程序了,但是前面的学习和练习,我们写的代码都是在自己的电脑上运行的,虽然我们学过了模块引入,文件引入import等等,我可以在程序 ...
- RGB颜色值
- Java线程切换(一)
(本文由言念小文原创,转载请注明出处) 一 前言有Android开发经验的同学都清楚,UI的更新必须在主线程中进行,且主线程不能被阻塞,否则系统ANR异常.我们往往做一些数据处理是耗时操作,必须要在 ...
- Java设计模式_七大原则
简介 单一职责原则.对类来说,即一个类应该只负责一项职责. 开闭原则.对扩展开放,对修改关闭.在程序需要进行扩展的时候,不能去修改原有代码,使用接口和抽象类实现一个热插拔的效果. 里氏替换原则.任何基 ...
- 10、pytest -- skip和xfail标记
目录 1. 跳过测试用例的执行 1.1. @pytest.mark.skip装饰器 1.2. pytest.skip方法 1.3. @pytest.mark.skipif装饰器 1.4. pytest ...
- Luogu P1816 忠诚
rmq模板题.用st表切一个. 关于st表的详解见我的博客:st表.树状数组与线段树 笔记与思路整理 题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家 ...