Linux 系统应用网络编程一(基础篇)

Linux 系统应用网络编程一(基础篇)

一、网络体系结构

1.1、OSI模型和TCP/IP 模型

       网络体系结构指的是网络的分层结构以及每层使用的协议的集合。其中最著名的就是OSI协议参考模型,他是基于国际标准化组织(OSI)的建议发展起来的。它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。

这个7层的协议模型规定的非常细致和完善,但在实际中没有被广泛的使用,其中最重要的原因之一就是它过于复杂。尽管如此,它仍是此后很多协议模型的基础。与此相区别的TCP/IP模型将OSI 的7层协议模型简化为4层,从而更有利于实现和高效通信。

TCP/IP 参考模型和OSI参考模型的对应关系如下:

下面具体讲解各层在TCP/IP 整体架构中的作用。

1)网络接口层

      网络接口层(Network Interface Layer)是TCP/IP的最底层,负责将二进制流转化为数据帧,并进行数据帧的发送和接收。数据帧是网络传输的基本单元;

2)网络层

      网络层(Internet Layer)负责在主机之间的通信中选择数据包的传输路径,即路由。当网络层接收到传输层的请求后,传输某个具有目的地址信息的分组。该层把分组封装在IP数据包中,填入数据包的首部,使用路由算法来确定是直接交付数据包,还是把它传递给路由器,最后把数据包交给适当的网络接口进行传输。

       网络层还要负责处理传入的数据包,检验其有效性,使用路由算法来决定应对该数据包进行本地处理还是应该转发。

       如果数据包的目的机处于本机所在的网络,该层软件就回去出数据包的首部,再选择适当的传输层协议来处理这个分组。最后,网络层还要根据需要发出和接手ICMP(Internet控制报文协议)差错和控制报文。

3)传输层

      传输层(Transport Layer)负责实现应用程序之间的通信服务,这种通信又叫做端到端通信。传输层要系统地管理信息的流动,还要提供可靠的传输服务,以确保数据到达无差错、无乱序。为了达到这个目的,传输层协议软件要进行协商,让接收方会送确认信息及让发送方重发丢失的分组。传输层协议软件把要传输的数据流分为分组,把每个分组连同目的地址交给网络层去发送。

4)应用层

      应用层(Application Layer)是分层模型的最高层。应用程序使用相应的应用层协议,把封装好的数据提交个传输层或是从传输层接收数据并处理。

    

1.2、TCP/IP协议

      TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。 对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。

TCP/IP协议通信模型

 TCP/IP结构

 

1.3、TCP和UDP

1)TCP

      TCP向应用层提供可靠的面向链接的数据流传输服务。它能提供可靠性通信(数据无误、数据无丢失、数据无失序、数据无重复到达)。

      通过源/目的的IP可以唯一地区分网络中两个设备,再通过源/目的的端口可以唯一地区分网络中两个通信的应用程序。

三次握手协议

第一次握手

  • 客户端向服务器发送一个SYN(同步序列编号)报文,并包含自己的初始序号Seq=x。此时,客户端进入SYN_SENT(同步已发送)状态,等待服务器的确认。

第二次握手

  • 服务器收到客户端的SYN报文后,确认客户端的SYN(Ack=x+1),表示收到了客户端的序号x,并将其值加1作为自己的确认号。同时,服务器也发送一个SYN报文,并包含自己的初始序号Seq=y。此时,SYN和ACK标志位都被设置为1,表示这是一个TCP连接请求确认报文。服务器进入SYN_RECV(同步已接收)状态。

第三次握手

  • 客户端收到服务器的SYN+ACK报文后,确认服务器的SYN(Ack=y+1),表示收到了服务器的序号y,并将其值加1作为自己的确认号。此时,客户端发送一个普通的ACK报文给服务器,标志位ACK被设置为1,序号Seq=x+1(因为客户端已经发送过一个SYN报文,所以不消耗序号),确认号Ack=y+1。客户端进入ESTABLISHED(连接已建立)状态。

连接建立

  • 服务器收到客户端的ACK报文后,确认连接已经建立,也进入ESTABLISHED状态。此时,TCP连接已经成功建立,双方可以开始传输数据。

四次挥手协议

第一次挥手

  • 当客户端想要断开连接时,它会发送一个FIN报文给服务器,其中Seq字段为客户端的当前序列号,Ack字段为服务器最近一次发送数据的确认号。此时,客户端进入FIN_WAIT_1状态,等待服务器的确认。

第二次挥手

  • 服务器收到客户端的FIN报文后,会发送一个ACK报文给客户端,其中Seq字段为服务器的当前序列号,Ack字段为客户端FIN报文的序列号加1(即x+1),表示收到了客户端的FIN报文。此时,服务器进入CLOSE_WAIT状态,等待应用程序关闭连接。同时,客户端收到服务器的ACK报文后,进入FIN_WAIT_2状态。

第三次挥手

  • 当服务器准备好断开连接时,它会发送一个FIN报文给客户端,其中Seq字段为服务器的当前序列号,Ack字段保持不变(即x+1)。此时,服务器进入LAST_ACK状态,等待客户端的确认。

第四次挥手

  • 客户端收到服务器的FIN报文后,会发送一个ACK报文给服务器,其中Seq字段为客户端的当前序列号(即FIN报文之后的序列号,x+1),Ack字段为服务器FIN报文的序列号加1(即y+1)。此时,客户端进入TIME_WAIT状态,等待2MSL(最大报文段生存时间)时间,以确保服务器收到最后一个ACK报文。服务器收到客户端的ACK报文后,关闭连接,进入CLOSED状态。客户端在等待2MSL时间后,如果没有收到服务器的重传FIN报文,则认为连接已经成功关闭,也进入CLOSED状态。

2)UDP

     UDP即用户数据报协议,是一种面向无连接的不可靠传输协议,具有资源消耗少、处理速度快的特点。

适用情况:

发送小尺寸数据(如对DNS服务器进行IP地址查询时);;

流媒体等网络多媒体服务中通常会采用UDP方式进行实时数据传输;

1.4、IP地址

      IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

1)IP地址类型

公有地址

公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。

私有地址

私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
以下列出留用的内部私有地址

A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255

2)IP地址分类

初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。
其中A、B、C3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址。

类别最大网络数IP地址范围最大主机数私有IP地址范围
A126(2^7-2)0.0.0.0-127.255.255.2551677721410.0.0.0-10.255.255.255
B16384(2^14)128.0.0.0-191.255.255.25565534172.16.0.0-172.31.255.255
C2097152(2^21)192.0.0.0-223.255.255.255254192.168.0.0-192.168.255.255

A类IP地址

一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。
A类IP地址 地址范围1.0.0.0到127.255.255.255[1]  (二进制表示为:00000001 00000000 00000000 00000000 - 01111110 11111111 11111111 11111111)。最后一个是广播地址。
A类IP地址的子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。


B类IP地址

一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。
B类IP地址地址范围128.0.0.0-191.255.255.255[3]  (二进制表示为:10000000 00000000 00000000 00000000----10111111 11111111 11111111 11111111)。 最后一个是广播地址。
B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。


C类IP地址

一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。
C类IP地址范围192.0.0.0-223.255.255.255[3]  (二进制表示为: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。
C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值