• TCP/IP通信过程(以发送电子邮件为例)(转)


    1.应用程序处理

    (1)A用户启动邮件应用程序,填写收件人邮箱和发送内容,点击“发送”,开始TCP/IP通信; 
    (2)应用程序对发送的内容进行编码处理,这一过程相当于OSI的表示层功能; 
    (3)由A用户所使用的邮件软件决定何时建立通信连接、何时发送数据的管理,这一过程相当于OSI的会话层功能; 
    (4)现在可以发送了,就在发送的那一刻,建立连接,通过这个TCP连接发送数据。首先是将应用层数据发送给下一层的TCP,再做实际转发处理。 
    2.TCP模块的处理

    传输层TCP负责建立连接、发送数据以及断开连接。TCP要将应用层发来的数据实现可靠传输至对端,需要在应用层数据前段加上TCP首部。(TCP首部包括源端口号和目标端口号,序列号,校验和)。然后,就可以将附加了TCP首部的包发送给IP。

    3.IP模块的处理

    IP层将上层传来的附加了TCP首部的包当做自己的数据,又在该数据前段加上自己的IP首部,生成IP包。然后参考路由控制表决定接受此IP包的路由或主机,以此发送到对应的路由器或主机的网络接口的驱动程序,实现真正发送数据。接下来将MAC地址(若果位置,可以利用ARP查找)和IP地址交给以太网的驱动程序,实现数据传输。

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

    把上层传来的IP包附加上以太网首部(该首部包括收、发端的MAC地址,以及标志以太网类型的以太网数据的协议),生成以太网数据包,通过物理层传输给接收端。此外,还要对该太网数据包进行发送处理,生成FCS(frame check sequence),由硬件计算添加到包的后面,主要是为了判断数据包是否由于噪声而破坏。

    现在可以通过物理层传输了 
    现在的数据包是这个样子的(截图于《图解TCP/IP》) 

    以下就是包的接收处理了

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

    对以太网数据包首部进行解析,如果发现是发给自己的包,则识别上一层为IP,否则丢弃包。

    6.IP模块的处理

    IP包首部的解析,如果发现是发给自己的包,则识别上一层为TCP,否则丢弃包。

    7.TCP模块的处理

    TCP包首部的解析。数据接收完毕后,接收端发送一个“确认回执”给发送端,如果该回执信息未能到达发送端,则发送端会认为接收端没有接收到数据则一直发送。数据被完整接收后,传递给端口号识别的应用程序。

    8.应用程序的处理

    接收端应用程序接收发送端发来的数据,确认地址,若无此地址,则返回给发送端一个“无此收件地址”的报错信息。若有此地址,则邮件被保存到本地硬盘,若保存也能正常进行,则发送一个“处理正常”给发送端,否则,如磁盘满等异常导致未能保存成功,则发送一个“处理异常”给发送端。

    现在,接收端就可以阅读邮件了 
    总结,整个流程如图(截图于《图解TCP/IP》) 

  • 相关阅读:
    Python语法入门01
    计算机基础入门
    小白初入Python人工智能
    python编译器的安装和pycharm的安装
    一个简单的例子,让你理解依赖注入
    分分钟教会大家第一个Spring入门案例
    白牌交换机:理想,现状与未来
    2017下一代数据中心网络研究报告
    pica8公司和picOS
    OCP(open compute project)
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9383607.html
Copyright © 2020-2023  润新知