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》)
TCP/IP通信过程(以发送电子邮件为例)(转)的更多相关文章
- TCP/IP通信过程
一.参考网址 1.以太网帧格式.IP数据报格式.TCP段格式+UDP段格式 详解 2. 二.TCP的建立过程 1.例子: 192.168.22.66 telenet到192.168.22.74的tcp ...
- TCP/IP通信网络基础
TCP/IP是互联网相关的各类协议族的总称. TCP/IP的分层管理 分层的优点:如果只有一个协议在互联网上统筹,某个地方修改就要把所有的部分整体换掉,采用分层则只需要改变相应的层.把各个接口部分规划 ...
- 使用Boost asio实现异步的TCP/IP通信
可以先了解一下Boost asio基本概念,以下是Boost asio实现的异步TCP/IP通信: 服务器: #include "stdafx.h" #include <io ...
- TCP/IP 通信
TCP/IP 通信又叫socket 通信,是基于TCP/IP协调面向连接的一个数据传输技术.是属于OSI国际标准的传输层,三次握手 提供数据,有序,安全,端到端的传输和接收.它有三个主要协议:传输控制 ...
- tcp/ip通信第5期之服务器端程序
/* 此程序是tcp/ip通信服务器端程序,测试运行在redhat5上 重构readline函数,解决粘包问题——利用“\n”识别一个消息边界 */ #include<stdio.h> # ...
- tcp/ip通信第5期之客户机端程序
/*此程序是tcp/ip通信的客户机端程序, 测试运行在redhat6系统上 重构readline函数,解决粘包问题——利用“\n”识别一个消息边界 */ #include<stdio.h> ...
- 第4章 TCP/IP通信案例:访问Internet上的Web服务器
第4章 TCP/IP通信案例:访问Internet上的Web服务器 4.2 部署代理服务器 书中为了演示访问Internet上的Web服务器的全过程,使用了squid代理服务器程序模拟了一个代理服务器 ...
- linux高性能服务器编程 (四) --TCP/IP通信案例
第四章 TCP/IP通信案例 HTTP代理服务器的大致工作原理 在HTTP通信链上,客户端和服务器之间通常存在某些中转代理服务器.它们提供对目标资源的中转访问.一个HTTP请求可能被多个 ...
- [转帖]Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点
Linux TCP/IP协议栈,数据发送接收流程,TCP协议特点 http://network.51cto.com/art/201909/603780.htm 可以毫不夸张的说现如今的互联网是基于TC ...
随机推荐
- flowable ui 界面请假流程操作实例
如题,网上的教程多是代码居多,UI界面操作实例那更是一页难求,楼主分享下几天来的入坑经历,希望有需要了解,但是不知道去哪里了解的小伙伴,看完我的文章后能有所启发,文章有不足之处还请指正,若有相关问题请 ...
- SQL Server ----- 生成sql 脚本
通过生成sql 脚本进行数据库转移 选中需要进行转移的数据库 点击生成脚本后出现 进入的是简介界面 直接点击下一步 进入到选择对象界面. 按照步骤进行设置 选择你需要的 架构和数据 ...
- Java随堂笔记二
变量常量类型转换和命名规范 变量和常量 static double salary = 2500; //属性:变量 //变量作用域: //类变量 static // 局部变量 ...
- cocos2d设置窗口标题
//窗口标题 #ifdef WIN32 CCEGLView* pGlView=CCDirector::sharedDirector()->getOpenGLView(); if (pGlView ...
- HDU校赛 | 2019 Multi-University Training Contest 4
2019 Multi-University Training Contest 4 http://acm.hdu.edu.cn/contests/contest_show.php?cid=851 100 ...
- .net core mvc启动顺序以及主要部件4-MVC
前面三章已经把MVC启动过程以及源代码做了讲解,本章开始正式MVC,mvc全称叫model view controller,也就是把表现层又细分三层,官网的图片描述: 默认创建了一个.net core ...
- APS.NET MVC + EF (05)---控制器
Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务端的交互,并且负责协调Model与View之间数据传递,是ASP.NET MVC框架核心.Controller为ASP. ...
- SQL Server中查找包含某个文本的存储过程 SQL 查找存储过程中出现过的文字怎么查询 查询整个数据库中出现的文本 sql 全局搜索
--将text替换成你要查找的内容SELECT name, *FROM sysobjects o, syscomments sWHERE o.id = s.id AND text LIKE '%tex ...
- vue中使用radio和checkbox
代码 <template> <div id="app"> <input type="checkbox" v-model=" ...
- Django的安全攻击
目录 Django的安全攻击 XSS XSS(跨站脚本攻击) 危害 原理 防护 csrf(Cross Site Request Forgery) csrf(跨站域请求伪造) 过程 Django 提供的 ...