概述
封装和解封装:
应用层---HTTP --超文本传输协议--- TCP 80
HTTPS --- TCP 443
FTP ---文件传输协议---TCP 20/21
ITFTP ---简单文件传输协议--- UDP 69
TELNET---远程控制协议---TCP23
SSH ---TCP 22
DNS---域名解析协议---UDP和TCP 53
HDCP---动态主机配置协议---UDP 67/68
传输层----(端口号)---TCP UDP
网络层----(IP地址)---IP
数据链路层----(MAC地址)---以太网协议---早期局域网的方案,现在应用于广域网中,可以理解为交换机组件的二层协议。
物理层----(不需要封装)
封装过程:
应用层:原始数据被转换成二进制数据
传输层:二进制数据被分割成小的数据段,并封装TCP头部 (数据段)(TCP头部的关键信息–端口号)
网络层:传输层传来的数据被封装上IP头部 (数据包)
(IP头部的关键信息–IP地址)
数据链路层:网络层传来的数据被封装上MAC头部 (数据帧)
(MAC头部的关键信息–MAC地址)
物理层:二进制数据组成的比特流转化为电信号在网络中传输 (比特流)
注:主机在封装数据包之前,必须要知道目的端IP地址,在封装数据帧之前,必须要知道去往目的网络的路由以及下一跳的MAC地址。
封装的必要参数
传输层:源端口号 目标端口号
网络层:源IP地址 目标IP地址
数据链路层:源MAC地址 目标MAC地址
解封装 :封装的逆过程,数据从比特流还原为数据的过程
动作:从底层往高层依次解封装,每解封装一层,会将该层的忒点那个协议报头去掉
解封过程:
物理层:将电号转化为二进制数据,并将其送至数据链路层
数据链路层:查看MAC地址,地址是自己,就拆掉MAC头部,继续传输
地址不是自己,就丢弃数据
网络层:查看IP地址,地址是自己,就拆掉IP头部,继续传输
地址不是自己,就丢弃数据
传输层:查看TCP头部,判断应该传到哪里,然后重组数据,传输到应用层
应用层:二进制转化为原始数据
以太网的帧结构:
头(前导符(标记),MAC地址,类型(表示上层使用的协议))---数据---尾(fcs帧数据校验) (以太网2型帧)
TCP协议:(更适合应用在对效率要求不高,但对准确性有较高要求的场景)
UDP协议:(更适于对效率要求较高,对准确性要求不高的场景)
面向连接:在传输数据之前先使用预备的协议建立点到点的连接,在进行数据的传输。
会话:(有方向之分)
TCP的封装:封装在头部
(1)4位首部长度
标准TCP报头宽度为4个字节,总计4×5=20个字节,所以在收到一个TCP报头后首先会读取20个字节(也就是报头信息)
(2)16位端口号:包括了源端口号和目的端口号。进行TCP通信时,客户端通常使用系统自动选择的临时端口号(一般都很大),而服务器则使用知服务端口号或服务器管理员自定义的端口号。
(3)32位序号:一次TCP通信过程中对一个传输方向上的字节流的每个字节的编号(从这个方向第一个报文段依次排列)。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中的序号值是系统初始化的一个随机值ISN(初始序号值)。那么之后在A到B的方向上发送的TCP报文段中的序号值将会被系统设置为ISN加上该报文段所携带数据的第一个字节在整个数据字节流中的偏移。
(4)32位确认号:用作对另一方发送来的TCP报文段做出相应。其值是收到对方的报文段的序号值加1。
(5)4位头部长度:标识该TCP头部有多少个32bit字(4字节)。一共有4位,所以最大能表示TCP头部大小为60字节。
(6)6位标志位包含如下几项:
URG标志,表示紧急指针是否有效。
ACK标志,表示确认号是否有效。一般称携带ACK标志的报文段是确认报文段。
PSH标志,提示接收端应用程序立即从TCP接受缓冲区读走数据。
RST标志,表示要求对方重新建立连接。称携带RST标志的TCP报文段为复位报文段。
SYN标志,表示请求建立一个连接。称携带SYN标志的TCP报文段为同步报文段。
FIN标志,表示通知对方本端将关闭连接。称携带FIN标志的TCP报文段为结束报文段。
伪头部校验:除了将传输层头部及数据部分的内容进行校验外,还会将网络层中的12个字节的数据进行校验---32位源IP,32位目标IP,8位保留,8位的协议,16位的总长度(反码相加法)
最后
以上就是傻傻含羞草为你收集整理的封装与解封装(TCP头部格式)封装和解封装:的全部内容,希望文章能够帮你解决封装与解封装(TCP头部格式)封装和解封装:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复