计算机网络--运输层

计算机网络--运输层

首先我们要知道,网络层是为主机之间提供逻辑通信,而运输层是为应用进程之间提供逻辑通信。

1. 两个主要协议

  • 传输控制协议TCP (Transmission Control Protocol) ---- 提供面 向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。
  • 用户数据报协议UDP (User Datagram Protocol) ---- 提 供无连接的、尽最大努力(best-effrt)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。

1.1 TCP和UDP的优缺点

TCP 的优点:可靠、稳定。

TCP 的缺点:慢,效率低,占用系统资源高

TCP 的使用场所: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 ……


UDP 的优点:快,比TCP稍安全。

UDP 的缺点:不可靠,不稳定,在数据传递时可能会丢包。

UDP 的使用场所: QQ语音 QQ视频 TFTP ……

1.2 TCP和UDP的区别

  1. TCP 传送数据需要先建立连接,UDP 是无连接的。
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
  4. UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  5. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  6. TCP首部开销20字节;UDP的首部开销小,只有8个字节
  7. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

2. 三次握手和四次挥手

SYN:表示建立连接标志,发起建立连接请求时,其值为 1,即 SYN = 1

seq:表示报文序列,连续 报文 seq 值也会连续

ACK:表示确认标志,ACK = 1 即表示收到报文

ack:表示确认编号,其值为接受报文的 seq + 1

FIN:表示断开连接标志,发起断开连接请求时,其值为 1,即 FIN = 1

具体步骤:

三次握手

(1)第一次握手:客户端向服务端发起。发送数据包SYN=1,seq=1(随机序号),此时客户端的主动发起使得其状态由原先的CLOSED(关闭)状态进入SYN-SENT(同步已发送)状态
(2)第二次握手:服务端向客户端发起。在接收请求前服务端一直处于LISTEN(监听)状态,接收请求后,发送数据包SYN=1,ACK=1,ack=i+1,seq=j(随机值)往客户端,其由原先的LISTEN进入SYN-RCVD(同步收到)状态
(3)第三次握手:客户端向服务端发起。客户端收到后检查确认ack,ACK值,正确后则发送数据包ACK=1,ack=j+1。当服务端确认后,则连接建立成功,此时客户端和服务端都进入ESTABLISHED(已建立连接)状态

四次挥手

(1)第一次挥手:客户端向服务端发起。发送数据包FIN=1,ACK=1,seq=k(随机值),此时客户端进入FIN-WAIT-1(终止等待1)状态
(2)第二次挥手:服务端向客户端发起。发送数据包ACK=1,seq=u(随机值),ack=k+1,此时服务端进入CLOSE-WAIT(等待关闭)状态,客户端接收并确认ack值后进入FIN-WAIT-2(终止等待2)状态
(3)第三次挥手:服务端向客户端发起。在确认数据接收完毕后,用来发起关闭服务端向客户端的数据传送,发送数据包FIN=1,ACK=1,seq=v(随机值),ack=k+1,此时服务端进入LAST-ACK(最后确认)状态
(4)第四次挥手:客户端向服务端发起。在检验服务端发送的数据后,发送数据包ACK=1,seq=k+1,ack=v+1,此时客户端进入TIME-WAIT(时间等待)状态,此时TCP连接还未释放,必须经过2*MSL(最长报文段寿命/最长分节声明其,MSL阿是任何IP数据报能够在因特网中存活的最长时间,任何TCP实现都必须为MSL设定一个值。RFC1122[Braden 1989]的建议值为2分钟,不过院子Berkelcy的实现传统上改用30秒。这意味着TIME-WAIT状态的等待持续时间在1-4分钟之间)时间后,当主动发起关闭端(客户端)撤销相应的TCB后,才进入关闭状态。服务端在接收来自客户端的值后也进入了关闭状态。

原文地址:https://www.cnblogs.com/luler/p/14529498.html