TCP/IP是很多协议的统称
这些协议里最重要的两个协议就是TCP协议和IP协议
IP协议提供寻址、路由等主机互联网功能
TCP协议约定连接管理、在两台主机之间建立数据通信可靠传输的标准
IP协议是OSI模型的第三层(网络层)
TCP协议是OSI模型的第四层(传输层)
TCP协议的特点:
TCP协议是面向连接的协议:在使用协议传输数据之前,发起连接的客户端和受理连接的服务器的服务器之间必须通过三次握手建立连接
客户端向服务器发送初始化连接的SYN请求包。这个数据包序号(Sequence number)字段将包含随机的初始化序列号
服务器将客户段发送的 ISN 加1之后,作为自己的ACK数据序列号,以此对客户端SYN信息表示确认,而且服务器的数据包会使用独立的序列号
IP数据包里有个专门的ACK标识位(flag bit),服务器把这个标准位设置为1,表示该数据包是确认数据包。
客户端再将服务器刚才回复的ISN+1,并向服务器发送ACK确认包。两台主机开始传输数据的正式过程。
TCP协议终止连接的机制如下所示。
客户端发送一个含有FIN(finish)标志的数据包。
服务器发送ACK确认数据,以告知客户端它已经受理了FIN的数据包。
应用服务器在关闭连接之前,会再发送一个FIN数据包给客户端。
客户端对服务器的FIN 请求发送ACK确认数据包。通常情况下,客户端和服务器再发送FIN信号之后都可以独自关闭连接
TCP协议是可靠的传输协议:TCP协议使用序列号和确认信号(ACK数据包)来识别数据包。每当收到一个数据包,它都会发送ACK数据包以进行确认。
如果任何一方没有收到对方的ACK数据包,它会自动重传。即使接收到了乱序的数据包,根据TCP协议,接收方可在重新整理数据包的顺序之后,再把数据传给(接收数据的)应用程序。
多数传送文件的应用程序,或者传递重要数据的程序都使用TCP协议。列如超文本传输协议(HTTP)和文件储阿生农户协议(FTP)都是基于TCP的传输协议。
UDP协议的特征与TCP协议相反。
UDP协议不是面向连接的协议。再采用这种协议传输数据时,收发双方不必建立UDP连接
UDP协议旨在尽可能地将数据包发送到目标地址。如果再传输过程中发生丢包情况,UDP协议不会自动重传(即操作系统不负责重新传送UDP包)。由应用程序决定是否重新传送数据包。
能够接受丢包情况的应用程序,列如视频流和其他多媒体程序,多数会采用UDP协议传输数据。著名的域名解析系统(DNS)、动态主机配置协议(DHCP)和简单网络管理协议(SNMP)使用的都是UDP协议。
为了能够将网络数据正确地传送给相应的应用程序,传输层实现了一种名为端口(port)的寻址方式。
在服务器端,软件程序都在特定服务端口受理网络数据;
客户端向服务器端口发送的数据,将会被服务器端对应的软件程序受理。端口号码是16位的编码,取值范围是0~65535.为了避免使用上的混乱,这些端口大多有着约定俗成的用途。