【计算机网络】TCP IP通信处理过程

1.数据包首部

每个分层中都会对所发送的数据附加一个首部,其中包含了该层必要的信息,如发送端地址、接收端地址以及协议等相关信息。
1


2.发送数据包

1)应用程序处理

进行编码处理(相当于表示层功能),管理何时建立通信何时发送数据等功能(相当于会话层功能)。建立连接后将数据发送给下一层的TCP,再做实际的转发处理。

2)TCP模块的处理

TCP根据应用的提示,负责建立连接、发送数据以及断开连接。提供可靠传输。

在数据前端附加一个TCP首部,包括源端口号、目标端口号(用以识别发送主机跟接收主机上的应用)、序号以及校验和(判断数据是否被损坏)。再将数据发送给IP。

3)IP模块的处理

IP在TCP传过来的数据前附加IP首部,包括接收端IP、发送端IP、上层协议等信息。

IP包生成后,参考路由控制表决定接收此IP包的路由或主机。随后将数据发送给连接这些路由器或主机网络接口驱动程序,以实现真正的数据发送。

如果不知道接收端MAC地址,则通过ARP查找。

4)网络接口(以太网驱动)的处理

在接收到的数据前面附加以太网首部进行发送处理。以太网首部中包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据协议。发送处理中的FCS由硬件计算,添加到包的最后。FCS为了判断数据包在传输过程中是否被破坏。
2


3.经过数据链路的包

包流动时,从前往后依次被附加了以太网包首部、IP包首部、TCP包首部(或UDP包首部)以及应用自己的包首和数据。而包的最后则被添加了以太网包尾。

每个包首部中至少包含两个信息:一个是发送端和接收端地址,另一个是上一层的协议类型。

经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/IP则会用端口号作为识别两端主机的地址。


4.数据包接收处理

包的接收流程是发送流程的逆序过程。

1)网络接口(以太网驱动)的处理

主机接收到以太网包以后,首先从包首部找到MAC地址判断是否为发给自己的包。如果不是则丢弃数据。

如果是发给自己的包,就查找包首部中的类型域,确定传送过来的数据类型,传给相应的子程序进行处理(若是IP类型作为传给IP,若是ARP类型则传给ARP处理),若没有对应的类型,则丢弃数据。

2)IP模块的处理

IP模块收到包以后,做相似处理。如果包首部的IP地址与自己的IP地址匹配,则接收数据并查找上一层协议。如果上一层是TCP就传给TCP处理,如果是UDP则传给UDP处理。对于路由器,往往接收端地址不是自己的地址,此时需要借助路由控制表转发数据。

3)TCP模块的处理

TCP模块首先会计算校验和,判断数据是否被破坏。然后检查是否按照序号接收数据。最后检查端口号,确定具体的应用程序。

数据接收完毕后,接收端会发送一个“确认回执”给发送端。如果该信息一直未到达,那么发送端会认为接收端没有接收数据而一直反复发送。

数据完整地接收以后,会传给由端口号识别的应用程序。

4)应用程序的处理

接收端应用程序会直接接收发送的数据。如果接收正常,会返回“处理正常”的回执,否则会发送相应的错误信息。
3

——《图解TCP IP》学习笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】数据链路相关技术

1.MAC地址 MAC地址长48字节。在使用网卡的情况下,一般会将MAC地址烧入到ROM中,任何一个网卡的MAC地址都是唯一的。例如 00:10:5A:70:33:61 MAC地址的3~24位表示厂商识别码,每个NIC厂商都有特定唯一的识别数字。25~48位是厂商内部为识别每个…

【计算机网络】IP地址

IP地址的基础知识 在TCP/IP通信中,IP地址用于识别主机和路由器。 1.IP地址的定义 IPv4地址为32位,IPv6地址为128位。(以下以IPv4为例) 将32位的IP地址分为4组,每组8位,每组间用“.”隔开,再…

天空的颜色和大气散射

天空的颜色采用"A Practical Analytic Model for Daylight"建造的模型计算。地形颜色的大气散射采用"Rendering Outdoor Lght Scattering in real Time"介绍的方法计算。A Practical Analytic Model for Daylight中的模型通过太阳的方位,Zenith…

hexo本地博客的转移

1. 复制配置文件 将原来的配置文件进行备份,只需要将文件夹 source、themes和配置文件_config.yml备份即可。 2. 安装Node.js sudo apt-get install nodejs sudo apt-get install npm 3. 安装hexo sudo npm install -g hexo 4. 新建文件夹,cd进入 …

K8S 外部访问配置、 Ingress、NodePort

将K8S部署应用提供给外部访问一般有三种方式: NodePort 暴露端口到节点,提供了集群外部访问的入口LoadBalancer 需要负载均衡器(通常都需要云服务商提供,裸机可以安装 METALLB 测试)Ingress 统一管理 svc的外部访问&am…

ubuntu18重装笔记

再次重装了系统,为方便以后再次重装,,,因此将主要步骤记录下来。 1. 更新源 sudo gedit /etc/apt/sources.list # 阿里源deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirro…

Flex2.0实现文件上传功能(服务器为ASP.NET)

简介:新的Flex2.0类库里提供了文件类,方便了上传/下载文件。下面的程序demo演示了Flex2.0生成flash来访问本地文件,在flash里上传用户选择的文件到服务器,flash客户端可以处理文件上传进度等多个事件,服务器端是C#写的…

【高性能定时器】 时间轮

时间轮 简述 顾名思义,时间轮就像一个轮子,在转动的时候外界会指向轮子不同的区域,该区域就可以被使用。因此只要将不同时间的定时器按照一定的方法散列到时间轮的不同槽(即时间轮划分的区域)之中,就可以实…

【安利】程序猿作图神器 - Graphviz

还在为在linux下画二叉树等图苦恼吗,现在就安利一波linux程序猿的作图神器——Graphviz。(本来在写其他东西,刚好要绘图,强行插入一篇blog) Graphviz (Graph Visualization Software) 是一个由AT&T实验室启动的开源…

仿ISQL功能的实现,可以实现批处理功能

具体请见下载文件:/Files/bigmouthz/DNet写的数据库isql执行程序(含源码).rar部分代码如下: DBCore.DataBaseVisitor.AbsDBHelper dbhelper null ; private void bt_DBLink_Click(object sender, System.EventArgs e) { try …

【高性能定时器】时间堆(最小堆)

最小堆及其应用:时间堆 最小堆及其应用:时间堆 一、 堆1. 概念2. 最小堆的实现3. 性质4. 代码 二、时间堆1. 概念简述2. 实现细节3. 代码 一、 堆 1. 概念 堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或…

【操作系统】生产者消费者问题

生产者消费者模型 文章目录生产者消费者模型 [toc]一、 生产者消费者问题二、 问题分析三、 伪代码实现四、代码实现(C)五、 互斥锁与条件变量的使用比较一、 生产者消费者问题 生产者消费者问题(英语:Producer-consumer problem&…

【计算机网络】三次握手与四次挥手

三次握手与四次挥手 通过TCP/IP协议的学习,我们可以知道TCP协议是一种面向连接的、可靠的传输协议。其中,为了保证客户端与服务器连接的有效性,就有了本篇文章所要介绍的“三次挥手”;而“四次挥手”则是为了保证连接的正确断开。…

小叔叔又飞走了

小叔叔在飞走之前,昨天晚上,给我们看了,他回老家拍下的,家里每个人的视频,(前面这半句话说得好累,不过应该不是病句)让我们看了动情又亲切,至少我是这么觉得。一个大家庭…

系统调用中断(EINTR)与SIGCHLD信号的处理

一、被中断的系统调用(EINTR)的理解1. 慢系统调用是?2. 慢系统调用的类别3. EINTR产生的原因5. 一般处理方法 二、SIGCHLD信号的处理1. SIGCHLD信号的产生2. SIGCHLD信号的处理3. 不处理SIGCHLD的后果 三、示例代码 一、被中断的系统调用(EINTR)的理解 1. 慢系…

SMO写的查看数据库信息的代码

要分析一个比较大的数据库,里面的表太多了,虽然是中文命名,但在2005的Management Studio中查看还是比较麻烦,比如,我想查看具有相同字段名称的表的情况就不好办。于是用SMO写了这个东东。代码比较乱,没有进…

win10宽带连接断网自动重连

文章目录1. 断开网络连接,重命名网络连接2. bat代码:检测到断线自动重连3. 设置开机自动执行3.1 方式一:任务计划程序3.2 方式二:用vbs代码开机运行bat1. 断开网络连接,重命名网络连接 中文名字可能出现远程访问错误 …

ubuntu20环境下使用DevStack安装Openstack-Wallaby(单节点、多节点)

文章目录一、单节点部署1. 环境准备1.1 镜像源1.2 pip源1.3 安装依赖包2. OpenStack安装 - wallaby2.1 添加stack用户2.2 设置代理2.3 下载devstack,使用-b指定版本2.4 进入devstack目录,编辑配置文件2.5 开始安装2.6 安装完成二、多节点部署1. 环境准备…

EMF的一些总结(2)——关于EMF的序列化

关于EMF的序列化对于EMF的序列化有几个比较重要的接口:Resource,ResourceSet,Resource.Factory,URIConverter。这些接口的主要作用就是保存模型到持久化存储介质,或者从持久化存储介质加载模型。1.关于URI(Uniform Resource Ident…

单链表实例之学生系统

单链表实例之学生系统 #include<stdio.h> #include<stdlib.h>#define NAME_LEN 20typedef struct node {int number;char *name;struct node *next; } node_t;node_t *g_head; int add_stu() {node_t *new, *tmp;tmp g_head;char *name;new (node_t *)malloc(si…