1.数据包首部

每个分层中都会对所发送的数据附加一个首部,其中包含了该层必要的信息,如发送端地址、接收端地址以及协议等相关信息。


2.发送数据包

1)应用程序处理

进行编码处理(相当于表示层功能),管理何时建立通信何时发送数据等功能(相当于会话层功能)。建立连接后将数据发送给下一层的TCP,再做实际的转发处理。

2)TCP模块的处理

TCP根据应用的提示,负责建立连接、发送数据以及断开连接。提供可靠传输。

在数据前端附加一个TCP首部,包括源端口号、目标端口号(用以识别发送主机跟接收主机上的应用)、序号以及校验和(判断数据是否被损坏)。再将数据发送给IP。

3)IP模块的处理

IP在TCP传过来的数据前附加IP首部,包括接收端IP、发送端IP、上层协议等信息。

IP包生成后,参考路由控制表决定接收此IP包的路由或主机。随后将数据发送给连接这些路由器或主机网络接口驱动程序,以实现真正的数据发送。

如果不知道接收端MAC地址,则通过ARP查找。

4)网络接口(以太网驱动)的处理

在接收到的数据前面附加以太网首部进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据协议。发送处理中的FCS由硬件计算,添加到包的最后。FCS为了判断数据包在传输过程中是否被破坏。


3.经过数据链路的包

包流动时,从前往后依次被附加了以太网包首部、IP包首部、TCP包首部(或UDP包首部)以及应用自己的包首和数据。而包的最后则被添加了以太网包尾。

每个包首部中至少包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。

经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/IP则会用端口号作为识别两端主机的地址。


4.数据包接收处理

包的接收流程是发送流程的逆序过程。

1)网络接口(以太网驱动)的处理

主机接收到以太网包以后,首先从包首部找到MAC地址判断是否为发给自己的包。如果不是则丢弃数据。

如果是发给自己的包,就查找包首部中的类型域,确定传送过来的数据类型,传给相应的子程序进行处理(若是IP类型作为传给IP,若是ARP类型则传给ARP处理),若没有对应的类型,则丢弃数据。

2)IP模块的处理

IP模块收到包以后,做相似处理。如果包首部的IP地址与自己的IP地址匹配,则接收数据并查找上一层协议。如果上一层是TCP就传给TCP处理,如果是UDP则传给UDP处理。对于路由器,往往接收端地址不是自己的地址,此时需要借助路由控制表转发数据。

3)TCP模块的处理

TCP模块首先会计算校验和,判断数据是否被破坏。然后检查是否按照序号接收数据。最后检查端口号,确定具体的应用程序。

数据接收完毕后,接收端会发送一个“确认回执”给发送端。如果该信息一直未到达,那么发送端会认为接收端没有接收数据而一直反复发送。

数据完整地接收以后,会传给由端口号识别的应用程序。

4)应用程序的处理

接收端应用程序会直接接收发送的数据。如果接收正常,会返回“处理正常”的回执,否则会发送相应的错误信息。

——《图解TCP IP》学习笔记

【计算机网络】TCP IP通信处理过程相关推荐

  1. 川崎机器人总线通信_川崎机器人TCP/IP通信方法及编程过程介绍

    川崎机器人的TCP/IP通信除了直接与川崎机器人通信外,有一种方式是通过PLC间接通信,附上我的另一篇文章,讲c#与三菱PLC通信的: 首先假设一个简单的应用情况,有一台带相机的川崎机器人,需要在机器 ...

  2. 《Linux高性能服务器编程》学习总结(四)——TCP/IP通信案例:访问Internet上的Web服务器...

    第四章      TCP/IP通信案例:访问Internet上的Web服务器 HTTP协议是工作在应用层上的协议,其应用十分广泛,而在进行通信的过程中,经常使用HTTP代理服务器.HTTP代理服务器主 ...

  3. TCP/IP通信程序设计方式

    刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为TCP/IP编程很简单.其实不然,TCP/IP编程具有较为丰富的内容.其编程的丰富性主要体现在通信方式和报文格式的多 ...

  4. socket编程TCP/IP通信(windows下,C++实现)

    1.简单理解什么是Socket? 通俗理解: Socket翻译成中文是套接字,同时也有插座的意思.可以按照插座的意思来理解它,插座就是连接电源和机器的中间件,同理,socket就是连接两个进程或应用的 ...

  5. TCP/IP 通信示例

    TCP/IP 通信示例 Global String ReadData_P_All$, ReadData_P$(10), data$ ' Global Preserve Double x Global ...

  6. EPSON TCP/IP 通信

    EPSON SCARA机器人TCP/IP 通信时,涉及到的相关指令说明. 14.3 TCP/IP命令. OpenNet //打开TCP/IP端口. ChkNet //返回端口状态:等待读取的字节数或错 ...

  7. Linux内核协议栈分析之——tcp/ip通信并不神秘

    Jack:计算机如何进行通信? 我:我可以告诉你带Linux操作系统的计算机如何进行通信. Jack:带Linux操作系统的计算机?这和不带操作系统的计算机有区别吗? 我:有的. Jack:哦.那你说 ...

  8. MATLAB与DSP(C6657)的TCP/IP通信实现

    最近尝试使用从MATLAB端键入输入,将输入值传给DSP,DSP运算之后将结果传回MATLAB并显示.我所设置的PC的IP地址是192.168.2.101,DSP的IP地址是192.168.2.100 ...

  9. 51单片机 ENC28J60 TCP/IP通信

    51单片机 ENC28J60 TCP/IP通信 单片机:STC90C516RD+ ENC28J60模块:mini(3.3V供电) 设备:PC.开发板.两个网线.路由器 首先先介绍一下本文的移植针对于单 ...

最新文章

  1. AI如何设计,才能人类利益最大化?
  2. [C#]从URL中获取路径的最简单方法-new Uri(url).AbsolutePath
  3. 初学python下载哪个版本-学python下载哪个版本
  4. 94年的博士后又拿到了这个金奖!原来是他的学弟
  5. c++中的explicit关键字及隐式类型转换
  6. mysql日志模式默认是raw还是_深入学习MySQL 02 日志系统:bin log,redo log,undo log
  7. java用io流存信息_Java io流的学习
  8. Unity加载GIf动画
  9. 中标麒麟linux系统安装打印机_国产中标麒麟操作系统的打印机安装
  10. 客快物流大数据项目(五十一):数据库表分析
  11. 矩阵连乘问题算法思想_动态规划之矩阵连乘问题
  12. PTA 厘米换算英尺英寸
  13. 区块链、人工智能和物联网之间是什么关系?
  14. 晨光计算机里的铃声是什么歌曲,soul app里的音乐有哪些?soul app里的铃声有哪些?[图]...
  15. [我是面试官系列]如何判断一个人的执行力?
  16. Django创建app应用和admin模块
  17. Python实现FP树
  18. 那些年的成长,爱情的总结
  19. 微信开发 Weixin JS接口 隐藏微信中网页底部导航栏
  20. 基于React Native和Ethers.js的电子钱包(二):路由和导航

热门文章

  1. Sass学习之路(3)——Sass编译
  2. 使用phpstorm+wamp实现php代码实时调试审计
  3. apache服务器配置Net的实践
  4. 2 android学习资料
  5. FileUpload之单个文件上传
  6. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...
  7. java二叉树代码_JAVA语言实现二叉树生成的代码教程
  8. 详解CSS选择器、优先级与匹配原理
  9. VS2019安全函数scanf_s问题
  10. 定位pure virtual method called问题