一个数据包从发送到接收在网络中经历了那些过程

假设学生给老师发送电子邮件,内容为:“老师您好!”。从计算机A向另一台计算机B发送电子邮件,站在网络原理的角度来分析整个过程。

  1. 启动应用程序新建邮件,将收件人邮箱和邮件内容填写好,应用程序进行编码处理。(应用层)

  2. 应用在发送邮件那一刻建立TCP连接(三次握手),将数据交给传输层。

    第一次握手:建立连接时,主机A向主机A发送请求报文
    第二次握手:主机B收到请求报文后,如同意连接,则向主机A发送确认报文
    第三次握手,主机A收到主机B的确认后,再次向主机B给出确认报文,完成连接

  3. TCP 就会把这个数据构成一个TCP数据报(附加上TCP首部包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(标明发送的包那部分是数据)以及校验和(判断数据是否被更改)),然后将该数据报交给IP协议(网络层)。

  4. IP协议就会构造一个IP数据报(IP会将TCP传过来的数据报当作自己的数据,加上IP首部包含接收端IP地址以及发送端的IP地址),此处要根据数据报的长度,以及MTU的限制,考虑是否进行分包,查路由表决定从哪一个端口转发,将数据交给数据链路层;

  5. 数据链路层将数据构造一个以太网数据帧,其中以太网首部包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。源mac就是本机mac,目的mac根据上面IP确定的转发端口来决定(基于mac学习完成,ARP查找)

数据报的结构:

  1. 数据到达物理层,物理层将数据报转换成光电信号或者电信号进行传输;
  2. 首先传输到下一台路由器上,路由器进行解析和分用(解析到传输层)NAT 路由选择 ,继续查路由表,把数据再次封装的,往下一个路由器设备上转发(在这里封装和分用和上边是一样的)
  3. 中间会经过若干个路由器转发的过程,最终到达目的服务器;
  4. 服务器就会进行分用。物理层把光电信号转成二进制bit流,交给数据链路层;
  5. 数据链路层从以太网数据报的首部找到MAC地址判断是否为发给自己的包,如果不是发给自己的数据则丢掉。如果是就解析出其中的IP数据报交给网络层,但是如果是无法识别的协议类型也会丢掉。
  6. 网络层收到数据报,同样进行解析判断自己是不是首部中的目标IP,如果是则接收数据包并查找上一层的协议类型,如果是TCP就交给TCP处理如果是UDP就交给UDP处理。网络层可能需要组包(取决于第4步是否分包),组包后将数据交给传输层;
  7. 传输层TCP收到数据,首先计算校验和保证数据的完整性,然后按照序号检查接收数据,检查端口号确定具体的应用程序 ,将解析出的应用层数据,交给应用程序,返回ACK(确认序号、窗口大小、延时应答、捎带应答)在这里ACK也是一个TCP数据报,也会涉及到一系列的封装和分用过程,如果没有收到ACK就会反复发送。
  8. 服务器的应用程序读取数据,解析数据获知邮件的收件人信息以及邮件内容。(应用层)
  9. 主机B给发送端返回一个回执信息。
  10. 断开连接(四次挥手)
    第一次挥手:主机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协议 十大特性详解(下)

【网络原理】一个数据包从发送到接收在网络中经历了那些过程(详细分析)相关推荐

  1. LoRa节点开发:5、代码详解LoRaWAN中的几种数据包(发送与接收数据)

    本文来源微信公众号[物联网思考] 本文主要结合LoRaNode SDK v4.4.2和LoRaWAN规范1.0.3来展开. 1.数据包类型 LoRaWAN规范中有不同的数据包,通过MType字段区分, ...

  2. 数据包收发c语言程序,使用C在套接字编程中创建数据包以及发送和接收数据包的正确方法...

    指针pkt未在您的应用程序中定义.您有两种选择: 1)将pkt声明为正常变量 struct packet pkt; pkt.srcID = 01; .... send(sockfd, &pkt ...

  3. 一个数据包大小是多少k_算法交流: 6046 数据包的调度机制 【2.6基本算法之动态规划】...

    [题目描述] 6046 数据包的调度机制 By OIer14wa随着 Internet的迅猛发展,多媒体技术和电子商务应用日益广泛,Internet上的服务质量 (QoS,Qualityof Serv ...

  4. 探究!一个数据包在网络中的心路历程

    来自:小林coding 前言 想必不少小伙伴面试过程中,会遇到「当键入网址后,到网页显示,其间发生了什么」的面试题. 还别说,这真是挺常问的这题,前几天坐在我旁边的主管电话面试应聘者的时候,也问了这个 ...

  5. 交换机工作原理,收到一个数据包后交换机是如何处理的(实验加抓包详细了解)

    感受集线器 在基础课程里面了解过集线器的原理,那会没有太多的去做实验,这里我们使用eNSP来做一个实验,正好支持HUB这个设备. 这里使用192.168.255.1去ping 192.168.255. ...

  6. Linux网络 - 数据包的发送过程

    继上一篇介绍了数据包的接收过程后,本文将介绍在Linux系统中,数据包是如何一步一步从应用程序到网卡并最终发送出去的. 如果英文没有问题,强烈建议阅读后面参考里的文章,里面介绍的更详细. 本文只讨论以 ...

  7. linux内核网络协议栈--数据包的发送过程(二十一)

    继上一篇介绍了数据包的接收过程后,本文将介绍在Linux系统中,数据包是如何一步一步从应用程序到网卡并最终发送出去的. socket层 +-------------+| Application |+- ...

  8. 计算机网络课程设计——发送和接收TCP数据包以及发送和捕获ARP数据包

    1.课程设计要求: 发送和接收TCP数据包:TCP是一种面向连接的.可靠的传输层协议.TCP协议工作在网络层IP协议的基础上.本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个T ...

  9. 网络延迟和数据包丢失对网络性能的影响—Vecloud微云

    网络性能指标一般指的是延时,丢失和抖动.今天我们将探讨它们(特别是延时和数据包丢失)是如何影响应用程序性能. 几乎所有应用程序都使用TCP,即传输控制协议,将其数据从A传输到B.互联网流量的85%是T ...

最新文章

  1. 京东电商搜索中的语义检索与商品排序
  2. android添加常驻图标到状态栏
  3. 返回对应对象的克隆方法
  4. leetcode —— 133. 克隆图
  5. 如何通过ssh登录linux,如何用SSH登录linux?
  6. MySQL数据库的常用命令语句记录——安全用户语句及函数
  7. 基于Web的酒店客房管理系统
  8. python漏洞扫描器编写,用Python编写Web漏洞检测工具
  9. 模拟摄像头和网络摄像头_没有网络摄像头没问题
  10. [Matlab]中solve函数与subs函数的使用方法
  11. 保姆级上云教程:购买百度云BCC服务器以及之后的一些注意事项
  12. Reference详解
  13. 医疗器械软件网络安全相关
  14. 复数辐角主值个人理解
  15. Week8学习总结-数据库
  16. 1.1 命题逻辑 笔记
  17. 博图无法链接plc下载程序 设置选择网卡
  18. 知识分享!Wi-Fi HaLow 和传统 Wi-Fi 的区别-道合顺大数据Infinigo
  19. 二叉树、B树、红黑树
  20. 手把手教你如何将SolidWorks零件导入vrep中

热门文章

  1. vsync与hsync
  2. 【C++】使用VS2022和GCC编译Xlnt库读取EXCEL
  3. 修复压缩文件提示:现校验和错误。该文件已损坏
  4. 统一网关 Gateway
  5. git libpng warning: iCCP: cHRM chunk does not match sRGB
  6. 如何查看本机的ip地址和端口号
  7. 一个“后浪”的狂欢,一群中年人的孤单!
  8. Quectel EC200A-CN移植
  9. c++实现“反应时间”测试
  10. 新浪采集内容数据自动发布