zoukankan      html  css  js  c++  java
  • 传输层协议介绍

    一、TCP和UDP协议

    1、TCP/IP协议族的传输层协议

    TCP(Transmission Control Protocol ) 传输控制协议

    (1)TCP是面向连接的、可靠的进程到进程通信的协议

    (2)TCP提供全双工服务,即数据可在同一时间双向传输

    (3)TCP报文段:TCP将若干个字节构成一个分组,叫报文段(Segment) TCP报文段封装在IP数据报中

    UDP(User Datagram Protocol ) 用户数据报协议

    二、TCP报文段

     

    序号:发送端为每个字节进行编号,便于接收端正确重组

    确认号:用于确认发送端的信息

    窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的

    UGR:紧急指针,当URG=1时,表明紧急指针字段有效,告诉系统报文段中有紧急数据

    ACK:确认指针,当ACK=1时,确认号字段有效

    PSH:推送指针,当两个应用进程进行交互通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的回应,这时将PSH=1即可

    RST:复位指针,当RST=1时,表明TCP连接中出现严重的差错,必须释放连接,然后再重新建立一次连接

    SYN:同步指针,字啊建立连接时用来同步序号。SYN=1,ACK=0,连接为请求报文。当SYN=1,ACK=1时,连接为响应报文

    FIN:终止指针,用来释放(结束)连接

    三、TCP连接(三次握手)

    1、刚开始两台PC机都处于close状态,之后PC2处于侦听状态。

    2、终于PC1开始发送数据给PC2,PC1请求报文SYN=1,初始序列号为X,期待收到X+1序号。(SYN=SENT)

    3、PC2收到后发送给PC1确认报文ACK=1和请求报文SYN=1,自己的初始序列号为Y,期待收到的序列号为Y+1,回复给PC1期待的序列号X+1。(SYN-RCVD)

    4、PC1收到后发送给PC2确认报文ACK=1,还有PC2确认后的序列号X+1,以及PC2期待的序列号Y+1.发送给PC之后就可以建立连接了。(ESTABLISHED)

    5、PC2处于已建立状态。(ESTABLISHED)

    四、TCP断开连接(四次挥手)

    1、PC1向PC2发送请求终止指针用来结束连接ACK=1,FIN=1,初始序列号为E,期待收到的序列号为E+1。(FIN-WAIT-1)

    2、PC2收到后发送确认报文ACK=1,并回复给PC1期待的序列号号E+1,等待关闭。(CLOSE-WAIT)

    3、PC1处于结束等待二状态。(FIN=WAIT-2)

    4、PC2也开始发送请求终止指针用来结束连接ACK=1,FIN=1,初始序列号为W,期待收到的序列号为W+1。(LAST=ACK)

    5、PC1收到后恢复确认指针ACK=1,并回复PC2期待收的序列号W+1。(TIME-WAIT)

    6、PC2收到后进入关闭状态。(CLOSE)

    7、PC1不会关闭,等到最长报文寿命时间(2*MSL)结束后才会关闭。

    五、常用的TCP端口号及其功能

    六、UDP协议

    1、无连接、不可靠的传输协议

    2、花费的开销小

    七、UDP报文的首部格式

    1、UDP长度:用来指出UDP的总长度,为首部加上数据

    2、校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制

    八、常用的UDP端口号及其功能

  • 相关阅读:
    Vue 自定义指令
    微信小程序 基础知识点整理
    32设计模式之单例
    Redis缓存穿透,缓存击穿,缓存雪崩
    Redis持久化之RDB和AOF
    Redis事务
    Mac下用Homebrew安装mongodb及遇到的问题解决
    mac下国内安装Homebrew教程
    Redis常用命令汇总及集群的配置
    redis.conf配置详解
  • 原文地址:https://www.cnblogs.com/990624lty-jhc/p/11192960.html
Copyright © 2011-2022 走看看