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连接中 ...
随机推荐
- 【一起来烧脑】一步React.JS学会体系
[外链图片转存失败(img-cn4fbVDq-1563575047348)(https://upload-images.jianshu.io/upload_images/11158618-8c6f3d ...
- 整理的Python资料,包含各阶段所需网站、项目,收藏了
虽然强调过很多次了,但是还是要多提一句,不要看python2.x,如果你是零基础过来的,请直接开始你的py3.x 之路.建议3.6,3.7的一些特性可能对你不是很重要. 1.初出茅庐 我不会推荐你们去 ...
- Chrome远程调试之WebSocket
var ws = new WebSocket('ws://localhost:9222/devtools/page/3c5c05fa-80b7-4cfe-8d1d-ebe79a7a5730');ws. ...
- JS中注入eval, Function等系统函数截获动态代码
正文 现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行. 动态执行js代码无非两种方法,即eval和 ...
- Windows下基于IIS服务的SSL服务器的配置
Windows下基于IIS服务的SSL服务器的配置 实验环境 Windows Server 2008 R1(CA) Windows Server 2008 R2(web服务器) Windows 7 x ...
- 【多线程与并发】:Java中的锁
锁的概念 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程并发的访问共享资源,如读写锁). 在JDK1.5之前,Java是通过sync ...
- RGB(204,204,204) 转 #cccccc
RGB 是十进制 ,转换成相应的十六进制即可. 例如 255 的十六进制 是 F ,204 的十六进制是 C (不区分大小写)
- Java初级黄金体验 其一
关于作者 作者背景:公元2001年,意大利那不勒斯少年,为了达成梦想,在国庆的三天发现自己替身能力Java.从而加入了黑手党组织,并成为...... 作者目的:入门Java 为了Fighting Go ...
- MySQL枚举类型enum字段在插入不在指定范围的值时, 是否是"插入了enum的第一个值"?
刚刚在看<<深入浅出MySQL>>一书的"ENUM类型"一节, 以下面的代码举例, 得出结论: "还可以看出对于不在ENUM指定范围内的值时, 并 ...
- 夺灵者哈卡(Hakkar, the Soulflayer)
Hakkar, the Soulflayer夺灵者哈卡Deathrattle: Shuffle a Corrupted Blood into each player's deck.亡语:将一张“堕落之 ...