背景
网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP 协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。
TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议有:
- SMTP:Simple Mail Transfer Protocol,简单邮件传输协议
- TELNET:Internet 远程登录服务
- HTTP:HyperText Transfer Protocol,超文本传输协议
- FTP:File Transfer Protocol,文件传输协议
TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。
TCP的主要特点:
① 面向连接 ② 每一条 TCP 连接只能是一对一的 ③ 提供可靠交付 ④ 提供全双工通信 ⑤ 面向字节流
TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字。
例如,若IP地址为 192.3.4.16 而端口号为 80,那么得到的套接字为192.3.4.16:80
UDP,在传送数据前不需要先建立连接,远地的主机在收到 UDP 报文后也不需要给出任何确认。虽然 UDP 不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是 UDP 。对应的应用层的协议有:
- DNS:域名系统(服务)协议(两者都有)
- DHCP:Dynamic Host Configuration Protocol, 动态主机配置协议
- NTP:Network Time Protocol,网络时间协议
- TFTP:Trivial File Transfer Protocol, 简单文件传输协议
- SNMP:简单网络管理协议
- NFS:Network File System,网络文件系统
常用端口号
应用 | FTP | TFTP | TELNET | SMTP | DNS | HTTP | SSH | MYSQL |
---|---|---|---|---|---|---|---|---|
端口 | 21 (控制), 20 (数据) | 69 | 23 | 25 | 53 | 80 | 22 | 3306 |
传输层协议 | TCP | UDP | TCP | TCP | UDP | TCP | TCP | TCP |
应用 | 应用层协议 | 端口号 | 传输层协议 | 备注 |
---|---|---|---|---|
域名解析 | DNS | 53 | UDP / TCP | 长度超过 512 字节时使用 TCP |
动态主机配置协议 | DHCP | 67/68 | UDP | |
简单网络管理协议 | SNMP | 161/162 | UDP | |
文件传送协议 | FTP | 20/21 | TCP | 控制连接 21,数据连接 20 |
远程终端协议 | TELNET | 23 | TCP | |
超文本传送协议 | HTTP | 80 | TCP | |
简单邮件传送协议 | SMTP | 25 | TCP | |
邮局协议第三版 | POP3 | 110 | TCP | |
网际报文存取协议 | IMAP | 143 | TCP |