zoukankan      html  css  js  c++  java
  • 计算机网络--运输层

    计算机网络--运输层

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

    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后,才进入关闭状态。服务端在接收来自客户端的值后也进入了关闭状态。

  • 相关阅读:
    关于dva前后端分离的跨域问题
    十大经典排序算法
    Java并发编程核心概念一览
    StringBuilder线程为什么不安全
    Java序列化的10个问题
    10 个最难回答的 Java 问题
    lombok @EqualsAndHashCode 注解讲解
    内存泄漏和内存溢出的区别和联系
    RabbitMQ
    RabbitMQ原理图
  • 原文地址:https://www.cnblogs.com/luler/p/14529498.html
Copyright © 2011-2022 走看看