栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

TCP/IP 网络编程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TCP/IP 网络编程

**

一、TCP/IP 协议族常用协议

**
1、IP 定义了 TCP/IP 的地址,寻址方法,以及路由规则。 IP 地址由两部分组成,即网络号和主机号。故一个完整的 IPv4 地址往往表示为 192.168.0.1/24 或 192.168.0.1/255.255.255.0 这种形式。

2、IPv6 提供了一些 IPv4 没有的新特性,并且有几乎用不完的地址,但目前还在部署过程中,尤其是国内除高校和科研机构外并不常用, 暂不讨论。

TCP/IP 协议的基本思想是通过网间连接器( Gateway)将各种不同的网络连接起来,在各个网络的低层协议之上构造一个虚拟的大网,是用户与其他网的通讯就像与本网的主机通讯一样方便。

3、个人对网络的理解

个人理解:网络在本质上就是一个个局域网互相连接起来形成的,当一个pc请求数据的时候,首先会在当前局域网中查找,如果找不到,会通过网关(或者路由器)在上一级局域网中查找,如果还找不到,依次往上一级局域网中查找,最终一直查到根节点。这也就解释了为什么访问国外网站速度很慢,而访问国内网站速度很快,从下图可以看出cn访问cn内资源都没有经过根节点,从cn访问us的资源要经过根节点才可以。
这是通过域名系统(DNS)实现的,参考:https://blog.csdn.net/qq_36741413/article/details/124984603

4、TCP/IP通讯流程

TCP/IP 的设计,是吸取了分层模型的精华思想——封装。每层对上一层提供服务的时候,上一层的整个数据结构是黑盒,作为一个整体直接作为本层的数据同时在本层加上自己的信息比如ip、端口号、mac。而不需要关心上一层协议的任何细节。

网络是分层的,对于应用层而言不用关系具体的底层是如何工作的,只需要按照协议将要发送或接收的数据打包好即可。 打包好以后都通过dev_queue_xmit函数将数据发送出去,接收数据的话使用 netif_rx 函数即可。

上面这个模型是最一般的模型,但是在 Linux 中,真正用到的模型是下面这样子的:

  • 应用层( Telnet, Ftp,等等)
  • 传输层( TCP 和 UDP)
  • 网络层( IP 和路由)
  • 网络底层(相当于 OSI 模型中数据链路和物理层)

所以当发送数据的时候虽然socket()只带了本地的地址,但是经过层层封装之后带上了所有的信息(数据、mac、端口号、在互联网中的唯一ip地址),最后通过物理层把数据发送出去。
因此就减少了开发者的工作量,只关注数据,经过下面的层层封装的协议过程不用考虑。

**

二、客户机/服务器模型

**

1、网络上进行通信的各端点,很多时候是作为遵循客户机/服务器模型的。

一般来说,服务器端具有以下特征:

  • 被动通信;
  • 始终等待来自客户端的请求;
  • 自己参与通信的网络接口和端口必须确定;
  • 处理客户端的请求后将结果(响应)返回给客户端。

而客户端的特征如下:

  • 主动通信;
  • 需要发起请求;
  • 自己参与通信的网络接口和端口可以不确定;
  • 发起请求后需要等待服务器回应结果。

服务器可以是有状态的也可以是无状态的,无状态的服务器不会保留两个请求之间的任何信息,而有状态的服务器会记住请求之间的信息。一个简单的客户机/服务器通信过程如图 17.4 所示。实际上的服务器一般都能同时并发处理多个客户端的请求。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号