"一位如蝴蝶般美丽的女子向我飞来,翩翩的舞姿如同云端轻盈的叶儿。"

----------------------------------------------------------------------------------------------------------

数据包首部:

每个分层都会对自己发送的数据附加一个首部,首部中包含了发送的目标地址等信息。  从上一层收到的包全部被当做本层的数据。

电子邮件发送例子:

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模型通信例子学习的更多相关文章

  1. IP地址和子网划分学习笔记之《IP地址详解》

    2018-05-03 18:47:37   在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...

  2. ArcGIS案例学习笔记-批量裁剪地理模型

    ArcGIS案例学习笔记-批量裁剪地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:空间数据的批量裁剪 优点:1.批量裁剪:任意多个目标数据,去裁剪任意 ...

  3. Java学习笔记之---单例模型

    Java学习笔记之---单例模型 单例模型分为:饿汉式,懒汉式 (一)要点 1.某个类只能有一个实例 2.必须自行创建实例 3.必须自行向整个系统提供这个实例 (二)实现 1.只提供私有的构造方法 2 ...

  4. WebGL three.js学习笔记 加载外部模型以及Tween.js动画

    WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...

  5. Vue学习笔记-Django REST framework3后端接口API学习

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

  6. UFLDL深度学习笔记 (三)无监督特征学习

    UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...

  7. Python Web学习笔记之TCP/IP协议原理与介绍

    HTTP.FTP.SMTP.Telnet等等协议,哦!那个HTTP协议啊就是访问网页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了解他,理解网络协议的作用与功能,然后再从 ...

  8. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  9. TCP/IP学习笔记:TCP传输控制协议(一)

    1 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务.两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中 ...

随机推荐

  1. AtCoder Grand Contest 014题解

    传送门 \(A\) 首先大力猜测一下答案不会很大,所以次数大于\(10^6\)输出\(-1\)就行了 不过我并不会证上界,据说是因为如果\(a=b=c\)且都是偶数肯定\(-1\),否则设\(a\le ...

  2. 像素迷踪,当Unity的Frame Debugger力不从心时

    http://www.manew.com/thread-92382-1-1.html 从版本5开始,Unity包含了一个全新的可视化帧调试工具,Frame Debugger.该工具能帮你解决很多图形方 ...

  3. HDU-盐水的故事

    http://acm.hdu.edu.cn/showproblem.php?pid=1408 这是一道高精度问题: 在自己错了数十遍之后找到了不少规律: 首先是Output limit exceede ...

  4. 《挑战30天C++入门极限》理解C++面向对象程序设计中的抽象理论

        理解C++面向对象程序设计中的抽象理论 很多书在一开始就开始学习josephus问题,为了让大家前面学起来较为容易我把前面涉及到此问题的地方都故意去掉了,现在我们已经学习过了结构体和类,所以放 ...

  5. nvarchar(MAX) 、ntext的差别

    今天在做一个项目时,程序成功向数据库插入一条数据, 插入的是一篇比较大的文章,而且还有很多样式. Id是int型,Content用的是 ntext类型的 但是当我在手动改数据库Id时出现错误: 错误源 ...

  6. 第02组 Alpha冲刺(3/6)

    第02组 Alpha冲刺(3/6)   队名:無駄無駄组长博客作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的 ...

  7. [HackTheBox]WEB题目

    0x01 [50 Points] I know Mag1k 问题描述: Can you get to the profile page of the admin? 访问分配的地址,是一个带注册的登入页 ...

  8. 三大框架 之 spring-JDBC

    目录 spring-JDBC模板 Spring的JDBC的模板 JDBC模板使用的入门 引入jar包 创建数据库和表 使用JDBC的模板 将连接池和模板交给Spring管理 配置文件配置Bean 使用 ...

  9. YARN 状态机可视化,生成状态机图

    由于在windows下面,配置好所有 编译hadoop2.4.1源码 的环境会很麻烦,好在我之前已经把hadoop2.4.1的源码成功导入eclipse,并解决了所有错误提示,所以我就可以在eclip ...

  10. 完美解决: org.apache.ibatis.binding.BindingException Invalid bound statement (not found)

    异常描述: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 原因: springboot ...