TCP/IP学习笔记7--TCP/IP模型通信例子学习
"一位如蝴蝶般美丽的女子向我飞来,翩翩的舞姿如同云端轻盈的叶儿。"
----------------------------------------------------------------------------------------------------------
数据包首部:
每个分层都会对自己发送的数据附加一个首部,首部中包含了发送的目标地址等信息。 从上一层收到的包全部被当做本层的数据。
电子邮件发送例子:
1 应用程序处理(应用层):
启动邮件程序,写好邮件,点击发送按钮,就开始TCP/IP通信了。 首先,程序会进行编码处理,例如使用UTF-8编码,(相当于OSI的表示层功能)。 转换完成后,不一定马上发送,因为有些软件有一次发送多个邮件的功能,,像这种何时建立通信连接已发送的管理功能,在一定意义上属于OSI参考模型中会话层的功能。
2 TCP模块的处理(传输层):
TCP根据应用的指示,建立连接,发送数据,断开连接。 该层在应用层传送来的数据前端附加TCP首部, 首部中包括 源端口号 和 目标端口号(用以识别发送主机和接受主机上的应用程序)、数据包的序号、校验和。
最终将加了首部的包发送给IP.
3 IP模块处理(互联网层)
该层将TCP传过来的TCP首部和数据结合起来作为自己的数据,并在TCP首部前加上自己的首部。
IP首部中包含接收端IP地址,发送端IP地址,以及用以标志其数据是TCP还是UDP的信息。
IP包生成后,参考路由控制表决定接受此IP包的路由或主机。--------??。 随后,IP包被发送给连接这些路由器或主机网络接口的驱动程序。
如果尚不知道接收端的MAC地址,可以利用ARP(address resolution protocol)查找,-----??。只要知道了对端的MAC地址,就可以将MAC地址和IP地址交给以太网的驱动程序,实现数据传输。
3 网络接口(以太网驱动)的处理
该层在IP模块传过来的数据前端加上以太网首部,包含 接收端的MAC地址,发送端MAC地址,以及 标志以太网类型的数据。 然后,通过 物理层 发送给接收端,
总结:
每个包首部中至少会包含两个信息:上一层(高层)的协议类型, 发送和接受端地址。 对于发送和接受的地址,以太网用的是MAC地址,IP用IP地址,TCP/UDP会使用端口号。在应用程序层,像电子邮件地址也是一种地址标志。
电子邮件接收:(逆过程)
1 网络接口(以太网驱动)的处理:
主机收到以太网包后,首先查看包头的MAC地址,判断是否是发给自己的包,不是则丢。 如果属于自己,查爆头中的以太网类型,如果是IP类型,则传送给IP处理子程序,如果是ARP协议,传送给ARP处理。
2IP模块的处理
IP模块接收到IP包以及后面的数据部分后,做类似的处理。如果首部指示的上层协议类型是TCP/UDP,则就将IP包头后面的数据部分传递给TCP/UDP处理。
对于有路由器的情况下,接收端地址经常不是自己的,此时需要借助路由控制表,查找到应该送达的主机或路由器之后,在转发数据。--说得是路由器吧?
2 TCP模块的处理
TCP模块首先会计算校验和,判断数据是否被破坏。会检查端口号,来决定将数据给哪个应用程序。 接收完毕后,会发送一个确认回执给发送端,如果发送端没有收到会一直发。
3 应用程序的处理
应用端接收到之后,通过数据解析可以获知邮件的收件人地址,如果该主机上有此地址则会正常收到,否则发送一个“无此地址”的回馈。
Ref:
《图解TCP/IP》--竹下隆史
TCP/IP学习笔记7--TCP/IP模型通信例子学习的更多相关文章
- IP地址和子网划分学习笔记之《IP地址详解》
2018-05-03 18:47:37 在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...
- ArcGIS案例学习笔记-批量裁剪地理模型
ArcGIS案例学习笔记-批量裁剪地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:空间数据的批量裁剪 优点:1.批量裁剪:任意多个目标数据,去裁剪任意 ...
- Java学习笔记之---单例模型
Java学习笔记之---单例模型 单例模型分为:饿汉式,懒汉式 (一)要点 1.某个类只能有一个实例 2.必须自行创建实例 3.必须自行向整个系统提供这个实例 (二)实现 1.只提供私有的构造方法 2 ...
- WebGL three.js学习笔记 加载外部模型以及Tween.js动画
WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...
- Vue学习笔记-Django REST framework3后端接口API学习
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- UFLDL深度学习笔记 (三)无监督特征学习
UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...
- Python Web学习笔记之TCP/IP协议原理与介绍
HTTP.FTP.SMTP.Telnet等等协议,哦!那个HTTP协议啊就是访问网页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了解他,理解网络协议的作用与功能,然后再从 ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- TCP/IP学习笔记:TCP传输控制协议(一)
1 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务.两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中 ...
随机推荐
- CODE FESTIVAL 2016 qual A题解
传送门 不知道为什么\(AGC\)系列的题里突然多了这些--那就做吧-- \(A\) 什么玩意儿-- upd:因为没看到最后要加换行居然没有\(1A\)好气哦-- const int N=15; ch ...
- linux线程操作
初始化条件变量 int pthread_cond_init(pthread_cond_t *cv,pthread_cond_attr *cattr); 函数返回值:返回0表示成功,返回其他表示失败. ...
- go error=216编译错误
CreateProcess error=216, 该版本的 %1 与您运行的 Windows 版本不兼容.请查看计算机的系统信息,了解是否需要 x86 (32 位)或 x64 (64 位)版本的程序, ...
- 第12组 团队Git现场编程实战
分工及贡献 组内有三人去考证了,只剩下6人 组员 分工 贡献比例 王永福 前后端,爬虫,博客主体 30% 孙承恺 建模,算法设计,统筹 18% 邱畅杰 爬虫 15% 徐祖豪 前端数据可视化 13% 张 ...
- windows下的上帝模式,很好用,细想,很恐怖啊
原文地址:https://blog.csdn.net/qq_43371556/article/details/101210501 上帝模式,即"God Mode”,或称为“完全控制面板”.是 ...
- Educational Codeforces Round 64(ECR64)
Educational Codeforces Round 64 CodeForces 1156A 题意:1代表圆,2代表正三角形,3代表正方形.给一个只含1,2,3的数列a,ai+1内接在ai内,求总 ...
- 2、vueJs基础知识02
vue生命周期: 钩子函数: created -> 实例已经创建 √ beforeCompile -> 编译之前 compiled -> 编译之后 ready -> 插入到文档 ...
- 关于python 的参数的汇总转
来自:https://blog.csdn.net/gaotihong/article/details/95687282 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...
- ubuntu 如何查看安装了哪些包
dpkg -l apt-cache search package 搜索包apt-cache show package 获取包的相关信息,如说明.大小.版本等sudo apt-get install p ...
- Javascript事件派发-dispatchEvent
事件派发的作用: 1.派发数据,将一个封闭模块中的数据传递给另一个封闭模块.2.事件完成了较为复杂的解耦. 事件和回调函数不同在于: 1.事件可以在任意地方去获取,而回调函数只能在一个地方存在,如果需 ...