一、传输层的两个协议
1、TCP协议
①TCP协议的作用:TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接收,其间发生的丢包、乱序,TCP会负责其重传和排序,另外TCP还可实现流量空制和拥塞避免等功能。
②TCP协议的应用场景:
(1)客户端程序和服务端程序需要多次交互才能实现应用程序的功能。比如接收电子邮件使用的POP3和发送电子邮件的SMTP,传输文件的FTP,在传输层使用的是TCP。
(2)应用程序传输的文件需要分段传输,比如浏览器访问网页,网页中图片和HTML文件需要分段后发送给浏览器,或QQ传文件, 在传输层也是选用TCP。
③TCP最大的特点:TCP需发送3个数据包建立连接(即连接时“三次握手”),释放连接时需发送四个数据包(即释放连接时“四次握手”)。
2、UDP协议
①UDP协议的应用场景:
(1)客户端程序和服务端程序通信,应用程序发送的数据包不需要分段。比如域名解析DNS协议就是用传输层的UDP客户端向DNS服务器发送一个报文解析某个网站的域名,DNS服务器将解析的结果使用一个报文返回给客户端。
(2)实时通信,比如QQ或微信语音聊天,或视频聊天。这类应用,发送端和接收端需要实时交互,也就是不允许较长延迟,即便有几句话因为网络堵塞没听清,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能愉快的聊天了。
(3)多播或广播通信。比如学校多媒体机房,老师的电脑屏幕需要教室的学生电脑接收屏幕,在老师的电脑安装多媒体教室服务端软件,学生电脑安装多媒体教室客户端软件,老师电脑使用多播地址或广播地址发送报文,学生电脑都能收到。这类应用在传输层也使用UDP。
二、传输层协议与应用层协议之间的关系
1、通常传输层协议加一个端口号来标识一个应用层协议。如下图所示:
■HTTP默认使用TCP的80端口。
■FTP默认使用TCP的21端口。
■SMTP默认使用TCP的25端口。
■POP3默认使用TCP的110端口。
■HTTPS默认使用TCP的443端口。
■DNS使用UDP or TCP的53端口。
■远程桌面协议(RDP)默认使用TCP的3389端口。
■Telnet使用TCP的23端口。
■Windows访问共享资源使用TCP的445端口。
■微软SQL数据库默认使用TCP的1433端口。
■MySQL数据库默认使用TCP的3306端口。
三、TCP/IP传输层端口
1、端口用一个16位端口号进行标志,允许有65535个不同的端口号。
2、端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的。
3、由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方计算机中的应用进程), 而且还要知道对方的端口号(为了找到对方的计算机)。
4、两大类端口:
■服务器端使用的端口号
(1)熟知端口,数值一般为0 ~ 1023。
(2)登记端口号,数值为1024 ~ 49151,为没有熟知端口号的应用程序使用的。使用这个范围的口端号必须在IANA登记,以防止重V
■客户端使用的端口号
(1)又称为短暂端口号,数值为49152 ~ 65535,留给客户进程选择暂时使用。
(2)当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口。通信结束后,这个端口号可供其他客户进程以后使用。
5、服务器上的端口作用:他们是用来定位服务器上的服务。由此可见,数据包的目标IP地址是用来在网络中定位某个服务器,目标端口用来定位服务器上的服务。如下图所示,端口在数据包传输过程中的作用:
6、window操作系统的有关端口的命令
①Netstat -an ——查看服务器侦听的端口
②Netstat -a ——查看建立的TCP连接
7、总结::服务器给网络中的计算机提供服务,该服务一运行就会使用TCP或UDP的一些端口侦听客户端的请求,每个服务使用的瑞口必须唯一。如果安装了某服务但客户端不能访问,就要检查该服务是否运行,或者在客户端telnet该服务端口是否成功。
注意:应用层协议使用的端口可以更改。当服务器的服务端口变化了,客户端连接服务器时需要指明使用的端口(默认的就不用指明端口)。更改服务器端口的好处是可以迷惑攻击者黑客,让其没办法判断该端口对应什么服务。