一、传输层的作用
TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。总之,根据通信的具体特征,选择合适的传输层协议是非常重要的。
1.1.传输层定义
IP首部中有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一层传输层协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容,还是UDP的内容。 同样,传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发给哪个应用,也设定了这样一个编号。 以包裹为例,邮递员(IP)根据收件人地址(目标IP地址)向目的地(计算机)投递包裹(IP数据报)。包裹到达目的地以后由对方(传输层协议)根据包裹信息判断最终的接收人(接收端应用程序)。 如果快递单上只写了家庭地址和姓氏,那该如何是好呢?你根本无法判断快递究竟应该投递给哪一位家庭成员。同样,如果收件人地址是学校或公司,而且也只写了一个姓氏,会给投递工作带来麻烦。因此,如果收件人地址是学校或公司,而且也只写了一个姓氏,会给投递工作带来麻烦。因此,在日本的投递业务中都会要求寄件人写清楚接收人的全名。其实在中国,一个人的姓氏不像日本那样复姓居多,人们也通常不会仅以姓氏称呼一个人。但是也有一种特殊情况,那就是如果一个收件地址中有多个同名同姓的接收者该怎么办?此时,往往会通过追加电话号码来加以区分。 在TCP/IP的通信当中也是如此,需要指定“姓氏”,即“应用程序”。而传输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别码。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
1.2.通信处理
前面提到的“应用程序”其实就是用来进行TCP/IP应用协议的处理。因此,TCP/IP中所要识别的“姓氏”就可以被理解为应用协议。 TCP/IP的众多应用协议大多以客户端/服务端的形式运行。客户端类似于客户的意思,是请求的发起端。而服务端则表示提供服务的意思,是请求的处理端。另外,作为服务端的程序有必要提前启动,准备接收客户端的请求。否则即使有客户端的请求发过来,也无法做到相应的处理。 这些服务端程序在UNIX系统当中叫做守护进程。例如HTTP的服务端程序是httpd(HTTP守护进程),而ssh的服务端程序sshd(SSH守护进程)。在UNIX 中并不需要将这些守护进程逐个启动,而是启动一个可以代表他们接收客户端请求的inetd(互联网守护进程)服务程序即可。它是一种超级守护进程。该超级守护进程收到客户端请求以后会创建(fork)新的进程并转换(exec)为sshd等各个守护进程。 确认一个请求究竟发送的是哪个服务端(守护进程),可以通过所收到数据包的目标端口号轻松识别。当收到TCP的建立连接请求时,如果目标端口为22,则转给sshd,如果是80则转给httpd。然后,这些守护进程会继续对该连接上的通信传输进行处理。 传输协议TCP、UDP通过接收数据中的目标端口号识别目标处理程序。传输协议的数据将被传递给HTTP、TELNET以及FTP等应用层协议。
1.3.两种传输层协议TCP和UDP
1.4.TCP与UDP区分
二、端口号
2.1.端口号定义
2.2.根据端口号识别应用
2.3.通过IP地址、端口号、协议号进行通信识别
2.4.端口号如何确定
2.5.端口号与协议
三、UDP
四、TCP
4.1.TCP的特点及其目的
4.2.通过序列号与确认应答提高可靠性
4.3.重发超时如何确定
4.4.连接管理
4.5.TCP以段为单位发送数据
4.6.利用窗口控制提高速度
4.7.窗口控制与重发控制
4.8.流控制
4.9.拥塞控制
4.10.提高网络利用率的规范
4.11.使用TCP的应用
五、其他传输层协议
5.1.UDP-Lite
5.2.SCTP
5.3.DCCP
六、UDP首部的格式
七、TCP首部格式
|