【网络原理】一个数据包从发送到接收在网络中经历了那些过程(详细分析)
一个数据包从发送到接收在网络中经历了那些过程
假设学生给老师发送电子邮件,内容为:“老师您好!”。从计算机A向另一台计算机B发送电子邮件,站在网络原理的角度来分析整个过程。
启动应用程序新建邮件,将收件人邮箱和邮件内容填写好,应用程序进行编码处理。(应用层)
应用在发送邮件那一刻建立TCP连接(三次握手),将数据交给传输层。
第一次握手:建立连接时,主机A向主机A发送请求报文
第二次握手:主机B收到请求报文后,如同意连接,则向主机A发送确认报文
第三次握手,主机A收到主机B的确认后,再次向主机B给出确认报文,完成连接TCP 就会把这个数据构成一个TCP数据报(附加上TCP首部包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(标明发送的包那部分是数据)以及校验和(判断数据是否被更改)),然后将该数据报交给IP协议(网络层)。
IP协议就会构造一个IP数据报(IP会将TCP传过来的数据报当作自己的数据,加上IP首部包含接收端IP地址以及发送端的IP地址),此处要根据数据报的长度,以及MTU的限制,考虑是否进行分包,查路由表决定从哪一个端口转发,将数据交给数据链路层;
数据链路层将数据构造一个以太网数据帧,其中以太网首部包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。源mac就是本机mac,目的mac根据上面IP确定的转发端口来决定(基于mac学习完成,ARP查找)
数据报的结构:
- 数据到达物理层,物理层将数据报转换成光电信号或者电信号进行传输;
- 首先传输到下一台路由器上,路由器进行解析和分用(解析到传输层)NAT 路由选择 ,继续查路由表,把数据再次封装的,往下一个路由器设备上转发(在这里封装和分用和上边是一样的)
- 中间会经过若干个路由器转发的过程,最终到达目的服务器;
- 服务器就会进行分用。物理层把光电信号转成二进制bit流,交给数据链路层;
- 数据链路层从以太网数据报的首部找到MAC地址判断是否为发给自己的包,如果不是发给自己的数据则丢掉。如果是就解析出其中的IP数据报交给网络层,但是如果是无法识别的协议类型也会丢掉。
- 网络层收到数据报,同样进行解析判断自己是不是首部中的目标IP,如果是则接收数据包并查找上一层的协议类型,如果是TCP就交给TCP处理如果是UDP就交给UDP处理。网络层可能需要组包(取决于第4步是否分包),组包后将数据交给传输层;
- 传输层TCP收到数据,首先计算校验和保证数据的完整性,然后按照序号检查接收数据,检查端口号确定具体的应用程序 ,将解析出的应用层数据,交给应用程序,返回ACK(确认序号、窗口大小、延时应答、捎带应答)在这里ACK也是一个TCP数据报,也会涉及到一系列的封装和分用过程,如果没有收到ACK就会反复发送。
- 服务器的应用程序读取数据,解析数据获知邮件的收件人信息以及邮件内容。(应用层)
- 主机B给发送端返回一个回执信息。
- 断开连接(四次挥手)
第一次挥手:主机A想分手,发送消息给主机B
第二次挥手:主机B通知主机A已经接受到分手请求,但还没做好分手准备
第三次回收:主机B已经做好分手准备,通知主机A
第四次挥手:主机A发送消息给主机B,确定分手,主机B关闭连接
基本上就是这样一个过程,我在慢慢在细化每一个过程。
参考文献 |
---|
【图解HTTP读书笔记】第一章:了解Web及网络基础 |
【图解HTTP读书笔记】第二章:简单的HTTP协议 |
【图解HTTP读书笔记】第三章:HTTP报文内的HTTP信息 |
【图解HTTP读书笔记】第四章:返回结果的HTTP状态码 |
【图解HTTP读书笔记】第五章:与HTTP协作的Web服务器 |
【图解HTTP读书笔记】第六章:HTTP首部 |
【图解HTTP读书笔记】第七章:确保Web安全的HTTPS |
【图解HTTP读书笔记】第八章:Session 和 Cookie工作原理 |
【图解TCP_IP读书笔记】第一章:网络基础知识 |
【图解TCP_IP读书笔记】第二章:TCP/IP 基础知识 |
---------------------------------------------------------------------------------- |
TCP协议 十大特性详解(上) |
TCP协议 十大特性详解(中) |
TCP协议 十大特性详解(下) |
【网络原理】一个数据包从发送到接收在网络中经历了那些过程(详细分析)相关推荐
- LoRa节点开发:5、代码详解LoRaWAN中的几种数据包(发送与接收数据)
本文来源微信公众号[物联网思考] 本文主要结合LoRaNode SDK v4.4.2和LoRaWAN规范1.0.3来展开. 1.数据包类型 LoRaWAN规范中有不同的数据包,通过MType字段区分, ...
- 数据包收发c语言程序,使用C在套接字编程中创建数据包以及发送和接收数据包的正确方法...
指针pkt未在您的应用程序中定义.您有两种选择: 1)将pkt声明为正常变量 struct packet pkt; pkt.srcID = 01; .... send(sockfd, &pkt ...
- 一个数据包大小是多少k_算法交流: 6046 数据包的调度机制 【2.6基本算法之动态规划】...
[题目描述] 6046 数据包的调度机制 By OIer14wa随着 Internet的迅猛发展,多媒体技术和电子商务应用日益广泛,Internet上的服务质量 (QoS,Qualityof Serv ...
- 探究!一个数据包在网络中的心路历程
来自:小林coding 前言 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个 ...
- 交换机工作原理,收到一个数据包后交换机是如何处理的(实验加抓包详细了解)
感受集线器 在基础课程里面了解过集线器的原理,那会没有太多的去做实验,这里我们使用eNSP来做一个实验,正好支持HUB这个设备. 这里使用192.168.255.1去ping 192.168.255. ...
- Linux网络 - 数据包的发送过程
继上一篇介绍了数据包的接收过程后,本文将介绍在Linux系统中,数据包是如何一步一步从应用程序到网卡并最终发送出去的. 如果英文没有问题,强烈建议阅读后面参考里的文章,里面介绍的更详细. 本文只讨论以 ...
- linux内核网络协议栈--数据包的发送过程(二十一)
继上一篇介绍了数据包的接收过程后,本文将介绍在Linux系统中,数据包是如何一步一步从应用程序到网卡并最终发送出去的. socket层 +-------------+| Application |+- ...
- 计算机网络课程设计——发送和接收TCP数据包以及发送和捕获ARP数据包
1.课程设计要求: 发送和接收TCP数据包:TCP是一种面向连接的.可靠的传输层协议.TCP协议工作在网络层IP协议的基础上.本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个T ...
- 网络延迟和数据包丢失对网络性能的影响—Vecloud微云
网络性能指标一般指的是延时,丢失和抖动.今天我们将探讨它们(特别是延时和数据包丢失)是如何影响应用程序性能. 几乎所有应用程序都使用TCP,即传输控制协议,将其数据从A传输到B.互联网流量的85%是T ...
最新文章
- 京东电商搜索中的语义检索与商品排序
- android添加常驻图标到状态栏
- 返回对应对象的克隆方法
- leetcode —— 133. 克隆图
- 如何通过ssh登录linux,如何用SSH登录linux?
- MySQL数据库的常用命令语句记录——安全用户语句及函数
- 基于Web的酒店客房管理系统
- python漏洞扫描器编写,用Python编写Web漏洞检测工具
- 模拟摄像头和网络摄像头_没有网络摄像头没问题
- [Matlab]中solve函数与subs函数的使用方法
- 保姆级上云教程:购买百度云BCC服务器以及之后的一些注意事项
- Reference详解
- 医疗器械软件网络安全相关
- 复数辐角主值个人理解
- Week8学习总结-数据库
- 1.1 命题逻辑 笔记
- 博图无法链接plc下载程序 设置选择网卡
- 知识分享!Wi-Fi HaLow 和传统 Wi-Fi 的区别-道合顺大数据Infinigo
- 二叉树、B树、红黑树
- 手把手教你如何将SolidWorks零件导入vrep中