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连接中 ...
随机推荐
- jmeter非GUI界面常用参数详解
压力测试或者接口自动化测试常常用到的jmeter非GUI参数,以下记录作为以后的参考 讲解:非GUI界面,压测参数讲解(欢迎加入QQ群一起讨论性能测试:537188253) -h 帮助 -n 非GUI ...
- Kafka(三) —— 集群监控
任何应用功能再强大.性能再优越,如果没有与之匹配的监控,那么一切都是虚无缥缈的.监控不仅可以为应用提供运行时的数据作为依据参考,还可以迅速定位问题,提供预防及告警等功能,很大程度上增强了整体服务的鲁棒 ...
- 记Oracle中regexp_substr的一次调优(速度提高95.5%)
项目中需要做一个船舶代理费的功能,针对代理的船进行收费,那么该功能的第一步便是选择进行代理费用信息的录入,在进行船舶选择的时候,发现加载相关船舶信息十分的慢,其主要在sql语句的执行,因为测试的时候数 ...
- Shell登陆远程服务器
现场服务器较多,密码3个月过期,在到期时需更改密码. 使用expect编写,尝试登陆2次后退出(防止密码错误时账号锁定),超时重试一次. shell脚本调用并定时执行,登陆成功后执行一条命令,如:ho ...
- Oracle备份的几种方式
这里使用Oracle 12C来大概演示说明一下rman的基本用法,这里不会深入讨论,因为本人也只是刚刚才接触,只是结合了网上的一些文章以及自己的实践来总结并拿出来大家学习,谢谢 目录 一.关于备份与恢 ...
- SSM项目启动报错WEB-INF\lib\javax.servlet-api-4.0.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10
错误信息: validateJarFile(D:\tomcat_ryxunit\webapps\ryx_unit\WEB-INF\lib\javax.servlet.jar) - jar not lo ...
- Javascript事件派发-dispatchEvent
事件派发的作用: 1.派发数据,将一个封闭模块中的数据传递给另一个封闭模块.2.事件完成了较为复杂的解耦. 事件和回调函数不同在于: 1.事件可以在任意地方去获取,而回调函数只能在一个地方存在,如果需 ...
- linux内核挂载根文件系统时报错”VFS: Cannot open root device "ram0" or unknown-block(0,0): error -6“如何处理?
1. 通过error -6得到: #define ENXIO 6 /* No such device or address */ 2. 解决办法 使能CONFIG_BL ...
- seekBar拖动滑块
中秋节学习,, 通过拖动滑块,改变图片的透明度 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- osg编译日志-release
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Release x64 ------1> Checking Build System1> CMake does ...