博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux网络编程-TCP/IP基本框架
阅读量:6193 次
发布时间:2019-06-21

本文共 1130 字,大约阅读时间需要 3 分钟。

TCP/IP层次架构

网络能在不同的机器和操作系统之间通信需要依赖一些列的规范的协议,例如:ARP,RARP,TCP,UDP,IP,IGMP,ICMP。这些协议是在不同的层次进行开发和工作,每一层负责完成一定的通信功能,而且层与层之间有相关接口,这样组合成一个完整的网络传输系统

<br />
下图是TCP/IP五层网络模型

Linux网络编程-TCP/IP基本框架

<br />

结合上图,网际的数据传输需要经过如下步骤:

<br />
1 应用程序把数据传输到应用程序的数据发送缓冲区,并设置好下一层的参数,等待发送,FTP(文件传输协议),HTTP(超文本传输协议),SMTP(简单邮件传输协议),SNMP(简单网络管理协议)。
2 数据进入传输层,在这里传输层负责两台主句上端到端的通信,主要依靠TCP和UDP完成。他们把应用层缓冲区的待发送数据接收后,进行数据分组,打包,标识并传输到下一层。TCP还需要负责数据传输成功的确定等可靠性工作。
3 当数据进入网络层的范畴,这里会处理数据分组在网络中的活动,比如:分组,路由。这一层的协议主要有:IP协议(网际协议),ICMP(Internet控制报文协议),IGMP(Internet组管理协议)。数据传输的目的地是根据传输层分组中的数据决定的。
4 数据最终会通过物理层的介质(光纤,电磁波)进行传输。
5 在接收方是相反的过程,数据从最底层一直到应用层还原用户可以识别的信息。
<br />
数据传输过程可以用下图简单描述(忽略了链路层和物理层)
<br />
Linux网络编程-TCP/IP基本框架

其实用户操作主要是在顶层进行,下面四层的工作由内核完成。

<br/>

数据的封装与分用

1. 数据封装:

用户数据从应用层传输到链路层,每一层都要被该层的协议进行一定的封装,标识和改造,就是在数据头部或尾部增加一些信息。传输层tcp封装过后传给ip的数据单元叫TCP段,IP层的叫做IP数据报。
<br/>
Linux网络编程-TCP/IP基本框架
<br/>
UDP和TCP数据基本一致,只是他们的头部长度不同,名称也不同。很多应用程序都可以使用TCP和UDP来传送数据。传输层协议在生成数据段首部时要加入该应用程序的标识符(16位的端口号来标识)。
<br/>
IP头部要说明数据传输的目的地以及上一层协议的类型标识,方便解包。
</br>
2.数据分用:
在接收端收到数据的时候,经过拆分的数据要重新组合,并去掉各层加上的头部信息,把数据还原。
<br/>
Linux网络编程-TCP/IP基本框架
.

客户-服务器模型

1.并发型交互

一个服务器可以同时处理多个客户端的请求

2.重复型交互

一个服务器统一时间只能处理一个客户端的请求,只有处理完后才能处理下一个请求

转载于:https://blog.51cto.com/13219187/2049162

你可能感兴趣的文章
html块状元素、内联元素
查看>>
WCF服务端与客户端时间匹配问题
查看>>
ruby之各种概念
查看>>
array_column php 函数 自定义版本 php_version<5.5
查看>>
关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)
查看>>
RHCS集群理论暨最佳实践
查看>>
第3章 Java语言基础----声明常量
查看>>
iPhone取消软件更新上边的1
查看>>
CentOS禁用root本地或远程ssh登录
查看>>
多表连接的三种方式详解 hash join、merge join、 nested loop
查看>>
SQL Server 自定义函数(1)把某一列多行的值拼接成一个字符串
查看>>
ASP Request.ServerVariables 参数集
查看>>
矩阵键盘 数码管
查看>>
何谓集群
查看>>
hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题
查看>>
Elasticsearch教程(九) elasticsearch 查询数据 | 分页查询
查看>>
magento megatron主题加入中文
查看>>
前端性能优化之优化图片 && 优化显示图片
查看>>
select标签中option内容加链接
查看>>
C分配struct变量一个不理解的地方
查看>>