4-1:TCP协议之传输层的作用及传输层协议TCP和UDP
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4-1:TCP协议之传输层的作用及传输层协议TCP和UDP相关的知识,希望对你有一定的参考价值。
一:传输层的定义
前面说过,IP首部有一个协议字段用于标识网络层(IP)的上一层采用哪一种传输层协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是UDP的内容
同样,传输层的TCP和UDP,为了识别自己所传输的数据究竟应该发给哪个应用,也设定了一个这样的编号。
以递送快递为例:假设IP为邮递员,它会根据收件人的地址(目的IP地址)向目的地(计算机)投递包裹(IP数据报)。包裹到达目的地后,由对方(传输层协议)根据包裹信息判断最终的接收人(接收端应用程序)
如果快递单上只写了家庭地址和姓氏,对于快递员来说就无法判断应该将快递递送给哪一位家庭成员,这会给快递工作带来麻烦。再比如,如果一个收件地址中有多个同名同姓的接受者(只是假设,虽然现实可能性很小)又该怎么办呢?这时,我们只需要附加相应的电话号码,就可以确定接受者。
在TCP/IP通信中也是如此,我们所说的姓氏也就是应用程序,而传输层必须指出这个具体的程序,为了唯一确定它,我们使用端口号这样一种识别码
二:通信处理
前面提到的应用程序,其实就是用来进行TCP/IP应用协议的处理。因此,TCP/IP中所识别的姓氏就可以理解为应用协议
服务端程序在UNIX系统中叫做守护进程。例如HTTP的服务端程序是httpd,而ssh的服务端程序是sshd。在UNIX中并不需要将这些守护进程逐一启动,而是启动一个可以代表它们接受客户端请求的inetd(互联网守护进程)服务程序即可。它是一种超级守护进程,该超级守护进程收到客户端请求以后会fork新的进程并进行进程程序替换(exec)为sshd等各个守护进程
如下,确认一个请求究竟发送给的是哪个服务端(守护进程),可以通过所收到数据包的目标端口号轻松识别。当收到TCP的建立连接请求时,如果目标端口号为22,则转给sshd,如果是80则转给httpd。然后这些守护进程会继续对连接上的通信传输进行处理
三:传输层协议
在TCP/IP中 实现传输层功能的协议中,最具有代表性的就是TCP和UDP
TCP
TCP是面向连接的、可靠的流协议。流是一种不间断的数据结构,你可以把它想象成自来水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但发送时数据与数据之间感觉就像“粘连”在了一起
- 例如,在发送端应用程序发送了10次100字节的消息,那么在接收端,应用程序有可能会收到一个1000字节连续不间断的数据。因此在TCP通信中,发送端引用可以在自己所要发送的消息中设置一个表示长度或间隔的字段信息(比如HTTP协议中的conten_length)
UDP
UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。使用UDP协议虽然可以确保发送消息的大小,但却不能保证消息一定会送到。
- 例如,发送端应用程序发送一个100字节的消息,那么接收端应用程序也会以100字节为长度接受数据。UDP不可靠,所以发送端发出去的消息在网络传输中一旦丢失,接收端将会接收不到这个消息。
以上是关于4-1:TCP协议之传输层的作用及传输层协议TCP和UDP的主要内容,如果未能解决你的问题,请参考以下文章