Linux网络编程
Linux的优点之一就是在于它丰富而稳定的网络协议栈,其范围是从协议无关层(如通用的socket层接口和设备层)到各种网络协议的实现
Linux网络模型
数据封装
TCP/IP协议族
协同工作的通信家族,为网络数据通信提供通路。包括:
1、Internet 协议(IP)
2、传输控制协议(TCP)和用户数据报协议(UDP)
3、处于 TCP 和 UDP 之上的一组应用协议。它们包括:TELNET,文件传送协议(FTP),域名服务(DNS)和简单的邮件传送程序(SMTP)等
网络层:
Internet 协议(IP): 负责在源主机和目的主机之间传输来自其较高层软件的称为数据报文的数据块,在源和目的地之间提供非连接型传递服务
网际控制报文协议(ICMP): 它实际上不是IP层部分,但直接同IP层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文。
地址解析协议(ARP):ARP 实际上不是网络层部分,它处于IP和数据链路层之间,它是在32位IP地址和48位物理地址之间执行翻译的协议
传输层:
该协议对建立网络上用户进程之间的对话负责,它确保进程之间的可靠通信,所提供的功能如下:
1.监听输入对话建立请求
2.请求另一网络站点对话
3.可靠的发送和接收数据
4.适度的关闭对话
TCP协议:
TCP是重要的传输层协议,目的是允许数据同网络上的其他节点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输TCP 协议具有严格的内装差错检验算法确保数据的完整性TCP 是面向字节的顺序协议,这意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号
用户数据报文协议(UDP):
UDP 提供不可靠的非连接型传输层服务,它允许在源和目的地之间传送数据,而不必在传送数据之前建立对话。它主要用于那些非连接型的应用程序,如:视频点播
它是无连接的,不可靠的传输服务.当接收数据时它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文.由于它执行功能时具有较低的开销,因而执行速度比TCP快
IP层:
功能:数据传输 寻址 路由选择 数据报文的分段
目的:为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务
只进行数据封装和传输,不向发送者或接受者报告包的状态,不处理所遇到的故障
应用层:
这部分主要包括Telnet,文件传送协议(FTP 和TFTP),简单文件传送协议(SMTP)和域名服务(DNS)等协议