什么是协议:
从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。
假设,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协议头和数据都计算在内。紧急指针和各种选项的解释从略。