图解TCP/IP协议(六)传输层(TCP/UDP)

传输层最常见的两种传输协议,分别是TCP和UDP协议。

一、TCP协议

tcp是面向有连接的流协议。流就是指不间断的数据结构,可以把它想象成排水管道中的水流。TCP为提供可靠传输,实行“顺序控制”或“重发控制”机制。

TCP/IP的众多应用大多以客户端/服务端的形式运行。作为服务端的程序需要提前启动,准备接收客户端的请求。

在这里插入图片描述

这些服务在UNIX系统中叫做守护进程。例如HTTP的服务端程序是httpd(HTTP的守护进程)。在UNIX中不需要将这些守护进程逐个启动,而是启动一个可以代表它们接收客户端请求的inetd(互联网守护进程)服务程序即可。它是一种超级守护进程。该超级守护进程收到客户端请求以后会复刻(fork)新的进程并转换(exec)为sshd等各个守护进程。

端口号:确认一个请求究竟发给的是哪个服务端(守护进程),可以通过所接收到数据包的目标端口号来识别,例如上图,如果目标端口为22,则转给sshd进程。

进程的端口号确定,有一些时标准规定的,例如:HTTP、TELNET、FTP所使用的端口号就是固定的。知名的进程端口一般被分配在0—1023之间。端口号大都分布在1024—49151的数字之间。

TCP首部:

有关于首部中的校验和介绍立即查看

在这里插入图片描述

二、UDP协议

UDP(User Datagram Protocol)是不具有可靠性的数据报协议,UDP可以确保发送消息的大小,却不能保证消息一定会送达。UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。UDP传输途中如果出现丢包,UDP也不负责重发。如果出现包到达顺序乱掉时也没有纠正的功能。关于包的细节控制,只能由应用程序来控制。

UDP是收到应用程序发来数据的那一刻,立即按照原样发送到网络上的一种机制。

UDP面向无连接,可以随时发送数据。再加上UDP本身的处理既简单又高效,经常被用于一下几个方面:

  • 视频、音频等多媒体通信(即时通信)
  • 广播通信(广播、多播)

TCP虽然可靠,但是却不一定处处优于UDP,UDP主要用于对高速传输和实时性要求较高的通信或广播。例如:打电话,即使缺少了一小部分的数据,也不会影响信息的传输的。

UDP首部:

有关于首部中的校验和介绍立即查看
在这里插入图片描述

三、套接字Socket

应用中如果使用了TCP或者UDP时,会用到操作系统提供的类库。两者都会广泛使用到套接字(socket)的API。套接字原本是由BSD UNIX开发的,后来又被移植到了Windows以及嵌入式操作系统中。应用在使用套接字时,可以设置对端的IP地址、端口号,实现数据的发送与接收。

服务器识别多个请求的例子:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章