我是靠谱客的博主 傻傻含羞草,最近开发中收集的这篇文章主要介绍封装与解封装(TCP头部格式)封装和解封装:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

封装和解封装:

应用层---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头部格式)封装和解封装:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部