Linux网络编程协议详解

什么是协议:

从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。

假设,A、B双方想传输文件。规定:

第一次,传输文件名,接收方接收到文件名,应答OK给传输方;

第二次,发送文件的尺寸,接收方收到该数据再应答一次OK;

第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。

由此,无论A B之间传递何种文件,都是通过三次数据传输来完成。A B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A B 之间达成的这个相互遵守的规则即为协议。

这种仅在A B之间被遵守的协议称之为原始协议。当此协议被更多的人采用,不断的增加、改进、维护、完事。最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中,该协议就成为一个标准协议。最早的ftp协议就由此衍生而来的。

TCP协议注重数据的传输。http协议注重于数据的解释。

典型协议:

传输层:TCP/UDP

应用层:HTTP FTP

网络层:IP ICMP IGMP ARP RARP

网络接口层: PPP

各种协议的简单解释:

TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。

UDP用户数据报协议是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

HTTP超文本传输协议是互联网上最为广泛的一种网络协议。

FIP文件传输协议

IP协议是因特互联网协议

ICMP协议是Internet控制报文协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

IGMP协议是Internet组管理协议,是因特网协议家族种的一个组播协议。该协议运行在主机和组播路由器之间。

ARP协议是正向地址解析协议,通过已知的IP,寻找对应主机的MIC地址。

RARP是反向地址转换协议,通过MAC地址确定IP地址。

TCP/IP协议族

TCP/IP模型包含了TCP、IP、UDP、Telnet、FIP、SMTP等上百个互为关联的协议,其中TCP和IP是最常用的两种底层协议,所以把他们统称为“TCP/IP协议族”。也就是说,“TCP/IP模型”中所涉及到的协议成为“TCP/IP协议族”,你可以区分这两个概念,也可以认为他们是等价的。

我们常用的socket编程是基于TCP和UDP协议的,他们的层级关系如下图所示:

协议格式:

数据包封装:

传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一-定 的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加.上一个数据首部(header) ,称为封装(Encapsulation),如下图所示:

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment) ,在网络层叫做数据报(datagram),在链路层叫做帧(frame) 。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

以太网帧格式:

ARP数据报格式:

IP数据报格式:

USP数据报格式:

TCP数据报格式:(这个最重要)

与UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。32位序号、32位确认序号、窗大小稍后详细解释。4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段,TCP协议头最短20字节。URG、ACK、 PSH、 RST、 SYN、 FIN是六个控制位,本节稍后将解释SYN、ACK、 FIN、 RST四个位,它位的解释从略。16位检验和将TCP协议头和数据都计算在内。紧急指针和各种选项的解释从略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值