【网络协议】传输层协议

目录

传输层协议

1.传输层的两个协议

1.1TCP和UDP的应用场景

1.2传输层协议和应用层协议的关系

2.TCP和UDP的对比(重点)

(1)无连接的UDP和面向连接的TCP

(2)UDP和TCP对单播、多播和广播的支持情况

(3)UDP和TCP对应用层报文的处理

(4)UDP和TCP对数据传输可靠性的支持


传输层协议

1.传输层的两个协议

Internet 是不可靠的。当网络拥塞时,来不及处理的数据包就被路由器直接丢弃。应用程序通信发送的报文需要完整地发送到对方,这就要求在通信的计算机之间有可靠传输机制。 Internet中的计算机有不同的操作系统,如Windows操作系统、Linux操作系统和UNIX操作系统等,智能手机也要访问Internet,智能手机有安卓系统和苹果系统,这些系统能够相互通信、实现可靠传输,是因为这些系统使用了相同的可靠传输协议-TCP(Transmission Control Protocol,传输控制协议),TCP是Internet的标准协议。有些应用程序通信使用TCP不合适,就使用(User Datagram Protocol,UDP)用户数据报协议。
TCP和UDP工作在相互通信的计算机上,为应用层协议提供服务,这两个协议被称为“传输层协议”。

1.1TCP和UDP的应用场景

传输层的两个协议-TCP和UDP有各自的应用场景。

TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接受,其间如果发生丢包,乱序由TCP负责重传和排序。

下面是TCP的应用场景:

(1)客户端程序和服务器端程序需要多次交互才能实现应用程序的功能。例如,接收电子邮件使用的是POP3,发送电子邮件使用的是SMTP,传输文件使用的是FTP,在传输层使用的是TCP。

(2)应用程序传输的文件需要分段传输,例如,使用浏览器访问网页,网页中的图片和HTML文件需要分段后发送给浏览器;又比如使用QQ传输文件,在传输层也是选用TCP。

如果需要将发送的内容分成多个数据包发送,这就要求在传输层使用TCP在发送方和接收方建立连接,实现可靠传输、流量控制和和避免拥塞。

例如,从网络中下载一个500MB的电影或下载一个200MB的软件,这么大的文拆分成多个数据包发送,发送过程需要持续几分钟或几十分钟。在此期间,发送方将要发送的内容一边发送一边放到缓存中,将缓存中的内容分成多个数据包,并进行编号,按顺序发送。这就需要在发送方和接收方建立连接,协商通信过程的一些参数(如一个数据多少字节等)。如果网络不稳定造成某个数据包丢失,发送方必须重新发送丢失的数据包,否则就会造成接收到的文件不完整,这就需要TCP能够实现可靠传输。如果发送方发快,接收方来不及处理,接收方还会通知发送方降低发送速度,甚至停止发送。TCP还能实现流量控制,因为Internet中的流量不固定,流量过高时会造成网络拥塞(这一点很就像城市上下班高峰时的交通堵塞一样),在整个传输过程中,发送方要一直探测网塞来调整发送速度。TCP还有拥塞避免机制。

发送方的的发送速度由网络是否拥塞和接收方接受速度两个因素控制,哪个速度低就用那个速度发送。

有些应用程序使用TCP就显得效率低了。例如,有些应用的客户端只需要向服务器端发送一个请求报文,服务器端返回一个响应报文就可以完成其功能。这类应用如果使用TCP发送3个数据包建立连接,再发送4个数据包释放连接,只为了发送一个报文,就很不值得,这时干脆让应用程序直接发送。如果丢包了,应用程序再发送一遍即可。这类应用,在传输层就使用UDP。

下面是UDP的应用场景:

(1)客户端程序和服务器端程序通信,应用程序发送的数据包不需要分段。如域名解析,DNS协议使用的就是传输层的UDP,客户端像DNS服务器发送一个报文请求解析某个网站的域名,DNS服务器将解析的结果通过一个报文返回给客户端。

(2)实时通信。这类如QQ或微信语音聊天,或视频聊天的应用,发送方和接收方需要实时交互,也就是不允许较长延迟,即便有几句话因为网络堵塞没听清楚,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能许快的聊天了。

(3)多播或广播通信。如学校多媒体机房,老师的计算机屏幕需要分享给教室里的学生计算机,在老师的计算机上安装多媒体教室服务端软件,在学生的计算机上安装多媒体教室客户端软件,老师的计算机使用多播地址或广播地址发送报文,学生的计算机都能收到。

这类应用在传输层使用UDP。

可见根据通信的特点,一个应用程序通信可以在传输层选择不同的协议。

1.2传输层协议和应用层协议的关系

应用层协议很多,但传输层就两个协议,如何使用传输层的两个协议标识应用层协议呢?

通常使用传输层协议加一个端口号来标识一个应用层协议。如下,

(1)HTTP默认使用TCP的80端口。

(2)FTP默认使用TCP的21端口。

(3)SMTP默认使用TCP的25端口。

(4)POP3默认是用TCP的110端口。

(5)HTTPS默认使用TCP的443端口。

(6)DNS默认使用UDP的53端口(其实TCP的53端口它也占着)。

(7)远程桌面协议(RDP)默认使用TCP的3389端口。

(8)Telnet默认使用TCP的23端口。

以上列出的都是默认端口,当然可以更改应用层协议使用的端口。如果不使用默认端口,客户端需要指明所使用的端口。

1.服务器使用的端口

服务器使用的端口号又分为两类,最重要一类叫做“熟知端口号”或“系统端口号”,数值为0~1023.这些数值可在网址IANA官网查到。互联网数字分配机构(IANA)把这些端口号指派给了TCP/IP最重要一些应用程序,让所有的用户都知道。另一类叫做“登记端口号”,数值为1024~49151.这类端口号是供没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如微软的RDP使用TCP的3389端口,就属于登记端口号的范围。

2.客户端使用的端口号

当打开浏览器访问网站或登录QQ等客户端软件和服务器建立连接时,计算机会为客户端软件分配一个临时端口,这就是客户端端口,取值范围为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫作“临时(短暂)端口号”。这类端口号是留给客户进程暂时使用的。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户端进程以后使用。

2.TCP和UDP的对比(重点)

(1)无连接的UDP和面向连接的TCP

UDP是无连接的,换句话说,使用UDP的通信双方,在传送数据之前不需要建立连接,可以随时发送数据;

TCP是面向连接的。在传输数据之前必须使用“三次握手”来建立TCP连接,基于已建立好的TCP连接进行数据传输。数据传输结束后,必须使用“四次挥手”来释放TCP连接。这里的连接是指逻辑连接关系,而不是物理连接。

(2)UDP和TCP对单播、多播和广播的支持情况

UDP支持单播、多播和广播,也就是说UDP支持一对一,一对多的通信。

TCP仅支持单播。

(3)UDP和TCP对应用层报文的处理

UDP对应用进程交付下来的报文既不合并也不拆分,而是保留这些报文的边界。换句话说,UDP是面向数据报的。

TCP对应用进程交付下来的应用报文,仅仅靠做事一连串的、无结构的字节流。TCP并不知道这些带传输的字节流的含义,仅将他们编号并存储在自己的发送缓存中。然后根据发送策略,从发送缓存中提取一定数量的字节,构建TCP报文段并发送。接收方TCP接收到报文段后提取出数据载荷并存储在接收缓存中,另一方面将接受缓存中的一些字节向上交付给应用进程。所以TCP是面向字节流的。

(4)UDP和TCP对数据传输可靠性的支持

UDP用户数据报出现的误码和丢失等问题,UDP并不关心。基于UDP的这个特点,UDP适用于实时应用,例如视频电话。

尽管网络层中的IP协议向上层提供的是无连接不可靠的数据传输服务,也就是说IP数据报在传输过程中可能出现误码或者丢失,但只要传输层使用的是TCP协议,TCP就可以向上层提供面向连接的可靠的数据传输服务。基于TCP的这个特点,TCP使用于要求可靠传输且对实时性要求不高的应用,例如文件传输和电子邮件等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值