良许Linux教程网 干货合集 Linux系统编程——网络编程基础(一)

Linux系统编程——网络编程基础(一)

Linux可以算是当先最流行的开源的操作系统,网络在系统中出于一个核心地位,本篇文章和大家分享一篇Linux系统编程——网络编程基础

一 计算机网络的组成

1.网络结构

根据局域网的组成形式,可以将局域网分为星型网络环状网络总线网络3种基本网络结构。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
各种网络优缺点

  • 环状网络:
    • 优点:使计算机容易协调使用以及容易检测网络是否正确运行
    • 缺点:如果其中两根线断掉,整个网络失效
  • 星型网络:
    • 优点:保护网络不受某一根电缆损坏的影响
  • 总线网络:所需布线比星型网络少,和环状网络有一样的缺点

2.OSI参考模型

开放式系统互联参考模型。该模型为计算机间开放式通信所需要定义的功能层次建立了全球标准:

  • 物理层:负责数据流传输的最底层功能模块。从数据链路层接收数据帧,然后以串行方式发送数据帧,每次只发送一个字节。也负责接收数据流,组合成数据帧传送给数据链路层
  • 数据链路层:将数据流打包成数据帧,将数据帧交给物理层进行传递。也从物理层接收数据帧,并通过循环校验来检测数据传输的可靠性
  • 网络层:用于设备间建立路由,处理数据帧中的地址信息。不检验数据的完整性,而是交由数据链路层完成
  • 传输层:以数据包和网段为对象的数据处理层,是高度抽象化的数据链路层服务。传输层对数据的完整性负责,如果某一数据包丢失,将要求对方重新发送
  • 会话层:用于建立两个网络终端间的联系,与传输层关系极为密切,用于决定通信的模式是单工还是双工,以及基本的握手协议
  • 表示层:用于处理不同计算机的数据编码方式,负责对数据编码进行转换。不同的计算机的数据编码系统可能有差别
  • 应用层:不包括任何应用,只是为OSI参考模型提供接口。通常,网络协议被应用程序调用的是应用层

在这里插入图片描述

3.TCP/IP参考模型

以OSI参考模型为基础设计的。TCP/IP协议是一个协议集,其核心为TCP协议和IP协议。具有如下4个特点:

  • TCP/IP是一种标准化的高级协议,同时提供了多种网络服务协议
  • 完善的网络地址分配方法,网络中每个点有具备独立的地址
  • 非专利技术,与操作系统及硬件结构无关
  • 与网络硬件无关,适合于各种网络结构

TCP/IP参考模型有4个层次,与OSI模型的对应关系如下:

在这里插入图片描述

(1)应用层

TCP/IP参考模型的最高层,向用户提供一些常用应用程序。应用层包括了所有的高层协议,并且总是不断有新的协议加入。主要协议有:

  • 网络终端协议TELNET: 用于实现互联网中的远程登录功能
  • 文件传输协议FTP: 用于实现互联网中交互式文件传输功能
  • 简单电子邮件协议SMTP: 实现互联网中电子邮件发送功能
  • 域名服务DNS: 用于实现网络设备名字到IP地址映射的网络服务
  • 网络文件系统NFS: 用于网络中不同主机间的文件共享

(2)传输层

也称TCP层,主要功能是负责应用进程之间的端到端通信。
传输层定义了两种协议:传输控制协议TCP用户数据包协议UDP

(3)网络层

又称为IP层,负责处理互联网中计算机之间的通信,向传输层提供统一的数据包。主要功能有:

  • 处理来自传输层的分组发送请求
  • 处理接收的数据包
  • 处理互联的路径

(4)物理链路层

主要功能是接收IP层的IP数据包,通过网络向外发送,或接收处理从网络上传送来的物理帧,抽出IP数据包,向IP层发送。该层是主机与网络的实际连接层。

二 TCP/IP协议

1.IP协议与Internet

规定:数据包由数据包正文报头两部分组成:

  • 数据包正文:要传递的数据,无格式要求
  • 报头:包括发送主机的网络地址、接收主机的网络地址、数据包的报头校验和数据包长度等信息

IP层协议主要功能:

  • 数据包传输
  • 数据包路由选择
  • 数据包拥塞控制

数据包采用“无连接”方式传递,即两台主机在通信之前不要建立连接。网络主机间使用统一的IP数据包,这样能保持不同物理网络间能够传递和识别数据。
乳沟目的地为同一网段的计算机,那么数据包将被直接传输过去。如果两台主机处于Internet上的不同子网,IP协议将通过路由器获得主机间的传输路径,通过交换机或服务器接力的方式,将数据包传递过去。

2.IP互联网协议地址

IP地址是一个32位二进制数,即4字节。通常将其表示为w.x.y.z的形式。字母对应0-255的十进制整数,对应二进制表示法中的一个字节。(点分十进制表示)
IP地址分为如下三类:

(1)A类地址

最高位为0,其前8位为网络地址,是在申请地址时由管理机构设定的,后24位为主机地址,可由网络管理员分配给本机构子网的各主机。第一个十进制整数的值在1-126之间。最多可有127个A类地址。

(2)B类地址

前16位为网络地址,后16位为主机地址,且第一位为1,第二位为0。B类地址的第一个十进制整数的值在128-191之间。

(3)C类地址

前24位为网络地址最后8位为主机地址,且第一位,第二位为1,第三位为0。第一个整数值在192-223之间。

有几个特殊的IP地址:

  1. 回送地址(127.0.0.1):用于网络测试或本机进程间通信
  2. 广播地址:用于呼叫整个网络内的计算机,子网中最后一个地址即被用作广播地址
  3. 子网地址:用于识别子网,子网中第一个地址即是子网地址

3.TCP协议

TCP是重要的传输层协议,必须保证数据传递的完整性。另外,数据报文中有计算机端口号信息,可以用来区别同一计算机上不同应用程序的数据。
数据报文中还有一个顺序编号,使接收的计算机能够根据编号重新按顺序还原数据。
TCP协议的另一个重要功能是把大的数据切成较小的数据包,或者将接收到的数据包按顺序还原为原始数据。如果发现某一数据包丢失,TCP协议会向源计算机发送请求,要求重新传递丢失的数据包。这种处理能力,被称为全双工
TCP协议最小的处理单位为字节,因此TCP是面向字节的顺序协议。数据包内每个字节都会被分配一个顺序编号,以及为了验证数据真实性的奇偶校验位。
TCP报文结构如下图所示:
在这里插入图片描述
字段定义如下:

  • 源端口:源计算机指定的端口编号
  • 目的地端口:接收计算机的端口编号
  • 顺序号:分配给TCP包的编号
  • 应答号:接收计算机向源计算机发送的编号
  • 偏移位:指出TCP头的长度。表明数据开始和TCP头结束。对于正常的20字节头,这个字段设置为0101
  • 保留位:为将来使用而保留,必须设置为0
  • 控制位:用作个别控制位,见下表
  • 窗口号:窗口字段也称接收窗口大小,表示在TCP连接上准备由主机接收的8位字节的数目
  • 校验位:一个差错检验数,用于确定被接收的数据包文在传输期间是否被讹误。包括TCP头和所有数据
  • 紧急指针:指出了紧接紧急数据的字节的顺序编号
  • 可选项:长度变量,它考虑到TCP使用的各种选项,即选项表的结束、无操作、最大分段长度

在这里插入图片描述
TCP提供的主要服务有:

  • 建立、维持和终结两个进程之间的连接
  • 可靠的包传递(经过确认过程)
  • 编序包(可靠的数据传递)
  • 控制差错的机制
  • 通过使用端口,允许在个别的源和目的地主机内部实现和不同进程多重连接的能力
  • 使用全双工操作的数据交换

4.UDP协议

又称用户数据包文协议,也是TCP/IP的传输层协议。它是无连接的、不可靠的传输服务。当接收数据时它不向发送方提供确认的信息,它不提供输入包的顺序。如果出现丢包或重复包的情况,也不会向发送方发出差错报文,与IP协议非常类似。
UDP的主要作用是分配和管理端口编号,以正确无误地识别运行在网络站点上的个别应用程序。
报文结构如下图所示:
在这里插入图片描述

至此关于Linux系统网络编程的分享教程分享结束,欢迎各位小伙伴在评论区留言。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

良许微信公众号

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部