【计网】数据包的封装传输过程

一、前言

1. 数据包如何传输

        当我们在聊天框点击发送,或者在网页点击搜索的时候。我们的主机上和某个遥远的主机建立起了一次通讯。那么就有些许疑问:

  • 问题一:消息是如何准确地定位到对方的“聊天框”的?(对方在哪儿)
  • 问题二:消息又是如何在茫茫网海中找到对方的“聊天框”?(怎么去)

2. 传输三要素

MAC地址

        用来标识和确定具体的网络设备,以网卡为单位。

        

IP地址

        IP地址可以具体到网络设备,也可以具体到某个局域网。但是现实情况里,每个人无法都拥有唯一的IP,而是在局域网内共用一个外网IP。

        那么IP既不能定位到具体的主机,那么它存在的意义是什么?为什么不直接用MAC地址? —— 那是因为IP地址其实不是用来标识唯一的网络设备的,它是用来帮助交换机简化MAC和端口的映射关系。

        具体可以参考 https://mp.weixin.qq.com/s/jiPMUk6zUdOY6eKxAjNDbQ

        

端口号

        有了IP和MAC地址,可以找到目标主机。但是主机里有很多应用程序,有微信,qq,浏览器。为了区分不同的网络程序,计算机会为每个网络程序分配一个独一无二的端口号,例如,Web 服务的端口号是 80,FTP 服务的端口号是 21,SMTP 服务的端口号是 25。

3. 封装传输方式

        对于问题一:已知IP地址 、MAC地址、端口号可以定位到对方的"聊天框"。问题二还没有解决,以下以HTTP为例子,探究数据包如何到达目的地。

        主要解决的问题:

  • 如何获取对方IP地址,MAC地址,端口号?
  • 如何封装解析IP地址,MAC地址,端口号?
  • 如何在网络中传输?

二、应用层(HTTP)

1. 应用层的作用

应用层作为数据封装的第一层,它的作用分为几点:

  1. 封装消息数据
  2.  获取目的IP地址端口号(只是获取没有封装,IP在网络层封装,端口号在传输层封装)

对于HTTP协议,消息数据封装在HTTP请求中,而IP地址由DNS域名服务器来获取。

2. URL

2.1 URL概念:平时所说的“网址”,称为资源定位符

                

2.2 URL作用:用来定位信息文件的位置以及处理方式

                

2.3 URL格式:[协议类型:] + [//] + [服务器地址] + [端口号] + [文件目录] + [文件名] +[?查询]

        

示例:https://blog.csdn.net/rushBonez?pid=20230509

                
协议类型https
服务器地址blog.csdn.net
端口号隐藏,默认80
文件目录/
文件名rushBonez
查询?pid=20230509

3. HTTP 请求

3.1 HTTP 请求报文

请求行方法URL版本CRLF
请求头字段名CRLF
CRLF
请求体
 
# 请求行
GET /rushBonez?pid=20230509 HTTP/1.1
# 请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Cookie: uuid_tt_dd=10_30866679310-1673246305513-461081; __bid_n=1859567c7758abce044207; __gads=ID=65f4de75611b7735-22a87aeb37d9007d:T=1673248879:RT=1673248879:S=ALNI_MZHk3EmtVsJHu-fNEjhIkCD4TanQw; p_uid=U110000; __gpi=UID=00000ba052393925:T=1673248879:RT=1675756277:S=ALNI_MYGD_HgZYiZ3L599UlARx-dfNlJ7Q; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_30866679310-1673246305513-461081!5744*1*rushBonez; historyList-new=%5B%5D; UserName=rushBonez; UserInfo=e6869afbf3ab465e808d20f1d11246d1; UserToken=e6869afbf3ab465e808d20f1d11246d1; UserNick=%E4%B8%8D%E9%94%88%E9%92%A2%E8%9A%8A%E5%AD%90; AU=6F9; UN=rushBonez; BT=1682326331661; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22rushBonez%22%2C%22scope%22%3A1%7D%7D; ssxmod_itna=GqUxuD2D07GQ3xBPGKWexjOnIj/eY5e0AKwdD/iDfo4iNDnD8x7YDv+mvKW3a8FEADfGvKZipiPfDheeKeAF9u4GLDmKDyCCEreDxOq0rD74irDDxD3Db3dDSDWKD9D048yRvLKGWDbx=Df4DmDGYneqDgDYQDGqILD7QDIq6qWD64X32B+l=q3exeiqDMIeGXFgWQkeaaaBU4xaWVirQDzMFDtkUB0dLYx0pcRwtV3O4WBY+z87GYFrpeKDmtQDwo+0DiW7xeQBvdYiha07poI7Md7z1PDDfKl+3xD=; ssxmod_itna2=GqUxuD2D07GQ3xBPGKWexjOnIj/eY5e0AKqG9tkiQDBqn747PQqG8mH1riRpu8h7KGFSZApxO3/=EcjpDxok7wse4+L7aeHkm6uNixM=QKuGeI87GcFLI8doiUT2j6dO4uiQ0=r47lw=xPBi9mKHwEFGo3Paj=HapoPK=rPCuQAhT6GG6jOrZDnie2A=vD073n4DLxG73YD=; c_dl_prid=-; c_dl_rid=1683342606887_285869; c_dl_fref=https://www.baidu.com/link; c_dl_fpage=/download/weixin_42120563/18167264; c_dl_um=distribute.pc_search_result.none-task-blog-2%7Eall%7Esobaiduweb%7Edefault-5-38850297.142%5Ev86%5Einsert_down1%2C239%5Ev2%5Einsert_chatgpt; FPTOKEN=wQiASYQ+5Dh3CiTdLdhbJYsBNCIIVj+A6tDOWNcSCD8ifsVrSZRqEhnCSFZy/7iAqyagEMK5cmoUk3Gr09Fv9+L1VYfmJ1RkUd2pXL350eVhgYxFfEwQWC5RLkFnMKKH2dKvK39i7EElaCtUH2IDtIejd8A/LFZZK4+FkkFJm4dlioRUBf0WnpI8dJSeKa9c32/ypblcEQLh2vZLGb9mcfW1n2uf4qpNctzkdw8MwAaaCgKxsckLxnnALn83EeU7k5OjiupoMoNmUZOkrA6rz0dTzlx1XehTrPxIEJGBMCcvzdfg2XkRR1aohQ1vb6VRCtL1gQNy41qXAWlJI4fhIs5zv6hjwhD2xlCpZ8TVw/RBA3GaMfS++nVYvHtnacDgWv7jQ8AoKfo6Iy8eX7S30Q==|Sk+t8xJLNBuTbW6IUcWyBEf7aqe7N6xrVMmDnhViee8=|10|9cc1c93946626ca80985ff23fc256e14; c_segment=9; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1683161006,1683247485,1683333724,1683506592; dc_sid=ac0e4871957543a09d19b7d7d7cbd222; dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MzEzNDg2LCJleHAiOjE2ODQxMzE5OTAsImlhdCI6MTY4MzUyNzE5MCwidXNlcm5hbWUiOiJydXNoQm9uZXoifQ.qrBG_4Ae83f9L9Mt6u-0UiJEfFTRYgPwvf5aSQvsDNM; dc_session_id=10_1683601286339.195021; c_utm_relevant_index=3; relevant_index=3; c_utm_term=http%E8%AF%B7%E6%B1%82%E6%8A%A5%E6%96%87; c_utm_medium=distribute.pc_search_result.none-task-blog-2%7Eall%7Esobaiduweb%7Edefault-0-118670105.142%5Ev86%5Einsert_down1%2C239%5Ev2%5Einsert_chatgpt; referrer_search=1683601357913; c_pref=default; c_ref=https%3A//www.baidu.com/link; c_first_ref=www.baidu.com; c_first_page=https%3A//blog.csdn.net/weixin_45031801/article/details/127481057; c_dsid=11_1683602363441.239634; c_page_id=default; dc_tos=rudfwb; log_Id_pv=1468; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1683602364; log_Id_click=2910; log_Id_view=9133
Host: blog.csdn.net
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
sec-ch-ua: "Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"# 请求体 GET请求无请求体
3.2 HTTP 请求方式
作用特点
GET用来查询数据,不对服务器的数据做任何的修改,新增,删除等操作

安全性低,参数附加在URL后面

无请求体

POST侧重于创建或更新服务器数据请求参数在于请求体中

3.3 HTTP 响应报文

状态行版本状态码短语CRLF
响应头字段名CRLF
CRLF
响应体
# 状态行
HTTP/1.1 200 OK
# 响应头
Date: Tue, 09 May 2023 03:36:54 GMT
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding
Vary: Origin
Set-Cookie: csrfToken=2FnIln6XHKPr12-I4H_i8jU-; Path=/newProxyVersions
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Response-Time: 94
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-download-options: noopen
x-readtime: 95
cmsuser: true
Content-Encoding: gzip
X-Cache: BYPASS
X-Request-Id: 53093da0f14f5e37dcc84a6308ecb9fb
Server: WAF
Connection: close# 响应体

4. DNS(寻找IP地址)

4.1 DNS 概念

  • HTTP报文里,就已经包含了要发往服务器的消息(请求体)和服务器的信息(请求行)。然而,传输三要素中的IP,MAC,PORT 在报文里只有一个PORT=80,那么仅有一个端口号定位服务器的位置呢?
  • 其实,IP地址的信息早已包含在请求行的URL里,只不过是以域名的形式出现。那么域名和IP地址的关系其实就是手机号和联系人的关系。所以在发送之前,需要查询服务器域名所对应的IP地址。
  • DNS 服务器就是专门用来存储Web服务器域名和IP地址的对应关系

                

4.2 DNS 层级

                                      根域名服务器

                                                |

                                                |__ 顶级域名服务器

                                                                |

                                                                |__ 权限域名服务器

                                                                                |

                                                                                |__ 本地域名服务器

  

4.3 DNS 解析过程

第一次递归查询
 第二次递归查询
第三次递归查询

4.4 DNS 缓存

        为了提高DNS的查询效率,在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。由于域名到IP地址的映射关系并不是永久不变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并删除超过合理时间的项。

        现在经过应用层之后,消息已经在HTTP报文里面,HTTP报文带着 消息数据 进入操作系统的网络协议栈


三、传输层

1. 传输层概念

1.1 传输层作用 

(1)封装,解析端口号

(2)提供通讯服务

        

1.2 传输层服务

(1)定位应用程序:将数据包按照端口发送给相应的应用程序

        

(2)提供通讯保障:网络层只提供传输,不保证传输结果。比如丢包,错序,重复,甚至不确定目标服务器的在线状态

        

(3)拥塞控制:防止接收端速度太慢造成溢出和丢包的现象

2. TCP 协议

2.1 TCP 功能

(1)建立连接:在发送数据前,先与目标服务器建立起连接,保证双方的收发能力。

          

(2)校验通信:保证数据的正确性和顺序,防止数据包丢失,防止数据包重复

        

(3)流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机缓冲区溢出

2.2 TCP 报文头(封装端口号)

typedef struct Tcp_Header {uint16_t srcPort;           // 源端口号16bituint16_t destPort;          // 目的端口号16bituint32_t seqNum;            // 序列号32bituint32_t ackNum;            // 确认号32bituint16_t headerLenAndFlag;  // 前4位:TCP头长度;中6位:保留;后6位:标志位uint16_t windowSize;        // 窗口大小16bituint16_t checkSum;          // 检验和16bituint16_t surgentpointer;    // 紧急数据偏移量16bit
}Tcp_Header;

2.3 TCP 连接机制  

 

 2.3.2 TCP 三次握手

 2.3.2 TCP 四次挥手

2.4 TCP 工作方式

ACK确认当TCP发出一个段后等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段
校验和 TCP将保持它首部和数据的检验和。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
重复丢弃TCP的接收端丢弃重复的数据
排序IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层
现在数据包经过传输层的封装之后,可以保证传输数据的 正确和防止数据丢失。现在TCP报文带着  端口号 + 序列号 + 校验 + 消息数据,进入下一层 网络层

四、网络层

1. 网络层的作用

        由应用层HTTP已经拿到了IP地址,端口号,消息数据。但是没有经过封装是无法使用IP地址和端口号的。所以经过传输层TCP端口号封装到了TCP报文头中,而网络层则需要把IP地址封装到IP报文头中,所以网络层在传输中有两个作用:

     (1)封装IP地址信息

     (2)寻找目标MAC地址

2. IP 协议 (封装IP地址)

typedef struct Ip_Header {int headerLen:4;int version:4;uint8_t tos;uint16_t totalLen;uint16_t ident;uint16_t flags;uint8_t ttl;uint8_t proto;uint16_t checkSum;unsigned char srcIP[4];    /* 源IP地址*/unsigned char destIP[4];   /* 目标IP地址*/
}Ip_Header;

3. ARP 协议(寻找MAC地址)

1. ARP 协议作用

        封装完IP报文后,我们已经获得了IP地址 + 端口号 + 序列号 + 校验 + 消息数据。仅剩下MAC地址还没有获取和封装,那么ARP协议的作用就是根据目标IP地址获取MAC地址       

        

        注:因为数据包在网络中是无法一步到位直接发送到目的主机上的,而是一个路由一个路由的转发,所以封装的MAC地址不是最终目标的MAC地址,而是下一跳路由的MAC地址

        

2. ARP 工作流程

        

        在网络层中,每次ARP请求可以获取了下一跳的MAC地址。现在IP报文带着 IP地址 + 端口号 + 序列号 + 校验 + 消息数据,进入下一层链路层


五、数据链路层

1. 链路层作用

  • 链路层是实际进行寻找 + 传输的作用层;
  • 应用层到网络层,主要用来封装消息和封装报文头,而链路层依靠着IP地址+MAC地址 在网络中寻找目标服务器。

2. MAC 帧结构

typedef struct Eth_Header {unsigned char destMac[6];unsigned char srcMac[6];unsigned char netType[2]; /* IP:0800  ARP:0806  RARP:0835*/
}Eth_Header;

3. 传输原则

在传输过程中虽然MAC地址在不断迭代,但是源主机IP和目标主机IP一直保持不变,这也是保证能顺利送达的保证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11841.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redhat7多种服务配置(Telnet/VNC/FTP/HTTP/Samba)

老师布置的作业,然后就是配置成功了,像重新配置一遍,也对此总结一下. 链接是参考,可以不用看,直接从我写的主体部分开始,要输入的命令我都有标注,没标注的都是说明,不用从链接里面开始哈!!!! 假设我们一直把yum配置好…

学成在线--认证授权模块

完整版请移步至我的个人博客查看:https://cyborg2077.github.io/ 学成在线–项目环境搭建 学成在线–内容管理模块 学成在线–媒资管理模块 学成在线–课程发布模块 学成在线–认证授权模块 学成在线–选课学习模块 学成在线–项目优化 Git仓库:…

双因素身份验证_如何启用两因素身份验证并保护您的环网帐户

双因素身份验证 Justin Duino 贾斯汀杜伊诺(Justin Duino) Following reports of bad actors gaining access to people’s Ring doorbell and security cameras, you might be interested in beefing up your account’s defenses. The easiest way to do this is to change y…

最详细的微信小程序制作方法

什么是微信小程序? 小程序”是说它首先是程序,然后具备轻便的特征。小程序并不像其他应用那样,它不需要安装,而是通过扫描二维码等打开后直接执行;用完以后也需要卸载。这就是所谓用完即走的原则。也是小程序则是提供…

SCI论文,你是先写中文再翻译么?

英语论文写作一直是英语非母语研究者,尤其是SCI新手的头疼问题。由于他们的英语水平有限,他们可能习惯于先用中文写主题内容。理顺逻辑后,他们会逐句把它翻译成英语,然后找一个润色机构润色。一篇SCI论文诞生了~ 小编列举了几种中…

通达信股票接口盘后数据下载流程是怎么样的?

当你下载通达信软件后,打开交易界面是这样的,在通达信界面中,在顶栏的主菜单左边分别是系统--功能--报价--分析--扩展市场行情--资讯--工具--帮助--市场。右边是行情--资讯--交易--服务。 盘后数据下载(打开方式:主菜…

港联证券|A股中长期投资价值显现

种种迹象显示,近期A股市场底部特征愈加明显。业内人士指出,当前市场已进入价值投资区域。而从中长期来看,中国经济的复苏前景和高质量发展趋势,为中国资本市场的长期投资价值奠定了基础。 底部特征浮现 2023年以来,A股…

港联证券|北交所行情活跃 近九成个股5月以来录得上涨

北交所A股昨日表现活跃,北证50指数上涨1.92%。数字人30cm涨停,云创数据涨18.38%,流金科技涨16.61%,广道数字、艾融软件、惠丰钻石等涨幅居前。 数字人昨日录得近16个月以来最大涨幅。近3个交易日,数字人累计获得融资净…

### 通达信数据之实时机构持股数据接口

博主过去几年听到朋友提到股票相关的数据供应商就是通达信,毕竟大家最常用的股票行情和交易软件的就是通达信,所以在博主看来通达信不管数据的质量做得怎样,那都是业内公认的风向标,因为太多人拿这些数据作为参考标的了。 本着大…

中国广电网络股份有限公司46位股东出资情况大揭秘!

中国广播电视在经过“四级办”“台网分离”“制播分离”的基础之下长期形成了各地“分割”发展的形势,广电网络之间较难以形成网间的互联互通、业务的互联互通等。 在2016年,根据中宣部、财政部及广电总局(注:时为国家新闻出版广电…

广和通“投资换市场”,收购标的净利率下滑/车载业务上半年亏损数千万

随着车联网搭载率的快速提升、5G前装元年的开启,带动了与汽车联网相关软硬件产业链的新一轮扩张行情。投资扩产、业务并购成为行业常态。 高工智能汽车研究院监测数据,今年1-6月国内市场新车车联网前装搭载量为552.79万辆,搭载率首次突破50%…

如何通过股票行情接口查询财务数据?

我们做交易,有时候还是需要用到一些上市公司的财务数据的,有什么板块可以快速获取财务数据呢?那肯定就是利用股票行情接口进行查询了,那具体要怎么做呢?下面这组代码可以了解一下: get_fundamentals - 查询…

4个实战场景完成90%职场写作

ChatGPT云炬学长 ​关注 “辛苦的一天终于结束了,日报还不放过我。记录重复性劳动说敷衍,写不好约等于没干活。” “开个会东讲一句西讲一句,会后需要快速同步会议重点和结论,一着急就写成没有逻辑的流水账。” “要写邮件催一…

chatgpt赋能python:Python怎么实现埋点

Python怎么实现埋点 什么是埋点? 在计算机技术中,埋点是指在网站或应用程序中嵌入一些代码以对用户行为进行跟踪、分析和收集数据的过程。通过埋点,我们可以了解访问者的行为偏好,帮助编写更好的内容,并优化网站或应…

New bing已在名单里但是总是用不了怎么办

New bing已在名单里但是总是用不了怎么办 前言 之前靠着科学上网,申请了美国账号后,New bing申请秒通过,但是很快过了2天又不能使用,表现为谷歌浏览器显示我在名单里,但是转到Microsoft Edge时即便登录的是该账号&am…

chatgpt-最常报错Access denied

一、问题 Access denied 的原因基本都是由于 IP 地址,例如我们用国内网络直接访问 ChatGPT 官网就会报错 Access denied(访问被拒绝),Error reference number 1020(错误参考编号:1020) 二、原因…

【原创】运维的终点是开发~chatGPT告诉你真相

文章目录 1、软件技术岗位鄙视链,你在哪层呢?2、让chatGPT告诉你运维工作好,还是开发工作好问它几个问题运维工程师的最佳职业发展规划有运维经验的工程师,搞开发好吗薪资会有显著提升吗以数据证明,能提升多少用中国企…

ChatGPT:你真的了解网络安全吗?浅谈攻击防御进行时之网络安全新定义

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 网络安全新定义总结 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序,是人工智能技术驱动…

ChatGPT和GPT-4帮你写人物传记

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

新宝两市股指午后再度回落

指数在午后再次回落,截至发稿,三大股指均全新翻绿,深成指、创业板指跌幅分别约为0.3%、0.2%,创业板指跌幅更是超过1%。 盘上看,苹果概念,光刻胶,5G概念,消费电子,氮化镓&…