Linux网络编程模型

来源:互联网 发布:剑侠情缘网络3电视剧 编辑:程序博客网 时间:2024/05/17 10:08

Linux网络编程模型

模型示意图如下所示:


其中,Socket是一个网络接口,不同的协议之间的差异性操作,则交给socket自行解决。

TCP编程模型如下所示:


UDP编程模型如下:


其中网络的基础为套接字:它是一种特殊的IO接口,是一种文件描述符;也是一种常用的进程之间的通信,本地,不同主机之间通信;

Socket可用网络地址结构

{协议,本地地址,本地端口}表示。

套接字类型有以下几类:

1.流式套接字SOCK_STREAM

提供可靠的、面向连接的通信流,保证数据传输的可靠性和按序收发。TCP属于流式;

2. 数据报套接字SOCK_DGRAM

不可靠,无连接的服务。UDP

3. 原始套接字SOCK_RAM

对底层协议进行访问,不方便,对一些协议开发。

在Linux中,Linux的优点之一就是在于它丰富而稳定的网络协议栈,其范围是从协议无关层(如通用的socket层接口和设备层)到各种网络协议的实现;Linux中网络栈的介绍一般分为四层的Internet模型。其模型与OSI七层网络模型对比图如下:


数据封装的具体过程如下:


TCP/IP协议族

TCP/IP 实际上一个协同工作的通信家族,为网络数据通信提供通路。为讨论方便可TCP/IP 协议组大体上分为三部分:

    1、Internet 协议(IP)

    2、传输控制协议(TCP)和用户数据报协议(UDP)

3、处于 TCP 和 UDP 之上的一组应用协议。它们包括:TELNET,文件传送协议(FTP),域名服务(DNS)和简单的邮件传送程序(SMTP)等。

各层协议作用介绍如下:

一、网络层:

(1)Internet 协议(IP)

    该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的地主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务。

(2)网际控制报文协议(ICMP)

    它实际上不是IP层部分,但直接同IP层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文。

(3)地址解析协议(ARP)

    ARP 实际上不是网络层部分,它处于IP和数据链路层之间,它是在32位IP地址和48位物理地址之间执行翻译的协议。

二、传输层: 包括传输控制协议和用户数据报文协议。

(1)传输控制协议(TCP):

该协议对建立网络上用户进程之间的对话负责,它确保进程之间的可靠通信,所提供的功能如下:

       1.监听输入对话建立请求

       2.请求另一网络站点对话

       3.可靠的发送和接收数据

       4.适度的关闭对话

(2)用户数据报文协议(UDP):

        UDP 提供不可靠的非连接型传输层服务,它允许在源和目的地之间传送数据,而不必在传送数据之前建立对话。它主要用于那些非连接型的应用程序,如:视频点播。

三、应用层: 这部分主要包括Telnet,文件传送协议(FTP 和TFTP),简单文件传送协议(SMTP)和域名服务(DNS)等协议

关于IP协议:

IP主要有以下四个主要功能:数据传送、寻址、路由选择、数据报文的分段。

IP的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务.这意味着在IP将数据递交给接收站点以前不在传输站点和接收站点之间建立对话。它只是封装和传递数据,但不向发送者或接收者报告包的状态,不处理所遇到的故障。

IP协议的协议包构成如下图所示:


TCP协议:TCP是重要的传输层协议,目的是允许数据同网络上的其他节点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输TCP 协议具有严格的内装差错检验算法确保数据的完整性TCP 是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。

TCP协议头如下所示:


UDP协议如下:

 

 

 

 

 

 

 

 

0 0
原创粉丝点击