什么是TCP/IP?

当计算机与网络设备之间需要通信的时候,双方就必须要制定一种双方都理解的方法。例如,如何探测到通信目标、由哪一边先发起通信等。不同的硬件、操作系统之间的通信,都需要制定一种规则。我们吧这种规则成为协议(protocol)。

协议中存在各种各样的内容。从电缆的规格到IP地址的选定方法、寻找异地用户的方法,以及Web页面显示需要处理的步骤,等等。

像这些跟互联网相关连的协议的集合统称为TCP/IP或TCP/IP协议族。当然也有别的说法,TCP/IP是在IP协议的通信过程中,需要使用到的协议的集合统称。

TCP/IP四层协议

TCP/IP协议族自上而下一共分为四层,分别为:应用层、传输层、网络层、数据链路层。

应用层

应用层主要负责操作系统、应用程序等应用与网络接口的通信活动与逻辑处理。

应用层对应OSI七层标准中的应用层、会话层、表示层。

应用层之间数据传输的基本单位为报文。

应用层主要包含的协议有:FTP(File Transfer Protocol,文件传输协议)DNS(Domain Name System,域名解析)SMTP(Simple Mail Transfer Protocol,简易邮件传输协议)POP3(Post Office Protocol,邮局协议)HTTP(Hyper Text Transfer Protocol,超文本传输协议) 等。

传输层

传输层主要负责网络连接中的两台计算机之间的数据传输。对将要传输的数据进行分段传输;负责两台计算机之间连接过程中的差错控制以及流量控制。

传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输,将数据稳定可靠的传送到对应的网关端口。

传输层之间的数据传输的基本单位为段或者报文。

传输层包含的主要协议有:TCP(Transmission Control Protocol,传输控制协议)UDP(User Datagram Protocol,用户数据报协议)

网络层

路径选择、路由及逻辑寻址

网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。

网络层中有一个非常重要的协议,就是IP协议,IP协议同样也是TCP/IP协议族的一个核心协议。

IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。

网络层的数据传输基本单位为IP数据报。

网络层包含的主要协议有:IP协议(Internet Protocol,因特网互联协议)ICMP协议(Internet Control Message Protocol,因特网控制报文协议)ARP协议(Address Resolution Protocol,地址解析协议RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)

数据链路层

数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

数据传输基本单位为帧

主要包含的协议有:以太网协议。

协议族

本节主要介绍

TCP/IP协议

TCP/IP协议是Internet中最基本的协议,Internet国际互联网的基础,是由传输层的TCP协议和网络层的IP协议组成。

简单来说:TCP协议负责数据的传输,当传输出现问题时,就发出信号,然后要求重新发送数据,如此往复,直到数据传输完成。而IP则是给在互联网内的每一台计算机规定一个地址。

把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是否按顺序发送的或者有没有被破坏,IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。TCP提供的是一种可靠的数据流服务,采用"带重传的肯定确认"技术来实现传输的可靠性。TCP还采用一种称为"滑动窗口"的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

TCP的三次握手

SYN(synchronize,同步标志)、ACK(acknowledge,确认标志)

  1. 客户端向服务端发送带有SYN的数据包给服务端。
  2. 服务端收到客户端发送的数据包,回传一个带有SYN/ACK的数据包给客户端。
  3. 客户端收到数据包之后进行报文检验,成功这回传一个ACK给服务端。

TCP的四次挥手

ACK(acknowledge,确认标志)、FIN(Finally,结束标志)

  1. 客户端向服务端发送一个带有FIN的数据包给服务端。
  2. 服务端收到客户端发送的数据包,回传一个带有ACK的数据包给客户端,并进入CLOSE_WAIT状态。
  3. 服务端发送一个带有FIN的数据包给客户端,同时关闭与客户端之间的数据传输,进入LAST_ACK状态。
  4. 客户端收到服务端发送的数据包之后,回传一个带有ACK的数据包给服务端。

UDP协议

UDP用户数据报协议,是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。

UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。

UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。

使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP。

TCP UDP 的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。

DNS协议

DNS是域名系统(Domain Name System)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,可以简单地理解为将URL转换为IP地址。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。

HTTP协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。

主要包含的请求方式:

HTTP 中, POST GET 的区别

SMTP协议

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。

POP3协议

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

IMAP协议

IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

ARP/RARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

逆地址解析协议,即RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址

RARP协议工作流程:

在浏览器输入网址后的执行过程

现在假设如果我们在客户端(客户端)浏览器中输入 http://www.baidu.com, 而 baidu.com 为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作: