计算机网络——传输层

这一章主要讲的是用户数据报协议UDP和传输控制协议TCP

传输层为相互通信的应用进程提供了逻辑通信。两个主机进行通信实际上就是两个主机中的应用进程互相通信。 应用进程之间的通信又称为端到端的通信。



传输层协议和网络层协议的主要区别



传输层的主要功能

传输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。
传输层的一个很重要的功能就是复用和分用。
传输层还要对收到的报文进行差错检测。
传输层有两种不同的传输协议,即面向连接的 TCP (Transmission Control Protocol)和无连接的UDP (User Datagram Protocol) 。
TCP 传送的数据单位协议是 TCP 报文段(segment)
 UDP 传送的数据单位协议是 UDP 报文或用户数据报。 


端口号

传输层使用协议端口号,或通常简称为端口。
端口用一个 16 位端口号进行标志。
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
熟知端口号,数值一般为 0~1023。


用户报文协议UDP主要特点

UDP是一种无连接的、不可靠的传输层协议;
UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能;
虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。


面向报文的 UDP

发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。
接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
应用程序必须选择合适大小的报文。


UDP socket

端口号拼接到(contatenated with) IP 地址即构成了socket(套接字)。 
UDP socket是由一个包含目的IP地址和目的端口号的二元组来标识的。因此,如果两个UDP报文段有不同的源IP地址和/或源端口号,但具有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的目的套接字定向到相同的目的进程。


传输控制协议TCP主要特点

TCP是一种面向连接的、可靠的传输层协议;
TCP协议建立在不可靠的网络层IP协议之上,IP不能提供任何可靠性机制,TCP的可靠性完全由自己实现;
TCP提供的是全双工服务


面向字节流的TCP

TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。
TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。


TCP socket

TCP socket由4元组所确定。即:源IP地址  源端口号  目的IP地址  目的端口号
分用:接收方利用这四个字段的值来实现报文段的正确分发。


TCP报文段格式



需要注意的是,序号字段的值指的是本报文段所发送的数据的第一个字节的序号。

确认号 = N, 则表明到序号N-1为止的所有数据都已正确收到。

检验和字段检验的范围包括首部和数据这两部分。



停止-等待:发送方发送一个报文段,等待接受方确认






停止等待的信道利用率






TCP传输连接建立与连接释放


TCP通信要经历三个阶段:(三次握手)

连接建立阶段---某一对等通信实体间的TCP连接建立可通过“握手”机制来完成。
数据传送阶段---一旦双方建立起TCP连接之后,则可进入数据传送阶段。
连接关闭阶段---当数据传送结束后,TCP发送方向接收方发送出关闭连接请求,但仍可接收数据,只有当接收方发出了对关闭连接请求的确认,发送方收到该确认后才能正式关闭该连接。

比方说有客户A和服务器B,A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x +1,自己选择的序号 seq = y。A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y+1。A 的 TCP 通知上层应用进程,连接已经建立。


TCP 的连接释放(四次挥手)

数据传输结束后,通信的双方都可释放连接。现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。B 发出确认,确认号 ack = u+1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收。若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。A 收到连接释放报文段后,必须发出确认。在确认报文段中 ACK = 1,确认号 ack=w+1,自己的序号 seq = u + 1。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值