zoukankan      html  css  js  c++  java
  • 详解TCP与UDP

    一、TCP的特点

    • 面向连接的、可靠的、基于字节流的传输层通信协议。
    • 将应用层的分割成报文段,并发送发给目标节点的TCP层。
    • 数据包都有序号,对方收到则发送ACK确认,未收到则重传。
    • 使用效验和来效验数据在传输过程中是否有误。

    二、TCP报文信息

      报文头包含信息有:

    • 源端口、目的端口
    • 标示进程(socket):IP地址+协议+端口号

      TCP的flags标志:

    1. URC:urgent,紧急指针,为1时有效;
    2. ACK:确认序列号标志;
    3. PSH:push标志,数据不进入缓存区,直接交给应用程序;
    4. RST:重置连接标志;
    5. SYN:同步序列号,用于建立连接过程;
    6. FIN:finish标志,用于释放连接。

    三、TCP的三次握手

    流程图如下(自己画的呦~ 推荐工具:在线网址ProcessOn):

     

    TCP三次握手流程图详细说明:

    1. 建立连接时,客户端发送SYN包(seq=x)到服务端,并进入SYN-SEND状态,等待服务器确认。
    2. 服务器收到SYN包,必须确认客户端的SYN(ack=x+1),同时,自己也发送一个SYN包(seq=y),即SYN+ACK包,此时,服务器进入SYN-RECV状态。
    3. 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户和服务器进入ESTABKISHED状态。开始数据传输。

    四、TCP的四次挥手

    TCP四次挥手流程图详细说明:

    1. client发送一个FIN后,用来关闭client到service的数据传输,client进入FIN-WAIT-1状态。
    2. service收到FIN后,发送一个ACK给client,确认序号为收到的seq+1(与SYN相同,一个FIN占用一个序号),service进入CLOSED-WAIT。
    3. service发送一个FIN,用来关闭service到client的数据传输,service进入LAST-ACK状态。
    4. client收到FIN后,client进入TIME-WAIT状态,接着发送一个ACK给service,确认序号为收到的序号+1。service进入CLOSED状态,完成四次挥手。

    五、TCP的滑动窗口

    作用:① 保证TCP的可靠性;

       ②保证TCP的流控制特性(数据顺序发送)。

    六、UDP的特点

    • 面向非连接的
    • 不维护连接状态,支持同时想多个客户端传输相同的消息
    • 数据包报文头只有8个字节,额外开较少
    • 吞吐量只受限于数据生成速率、传输速率及机器性能
    • 尽最大努力交互,不保证可靠交付,不维持连接状态表
    • 面向报文,不对应用程序提交的报文进行拆分和合并

    七、TCP和UDP的区别

    • 面向连接/无连接
    • 可靠/不可靠
    • 报文有序/无序
    • 速度
    • 量级
  • 相关阅读:
    P3387 【模板】缩点 tarjan
    P2831 愤怒的小鸟 状压dp
    交流帖
    P3959 宝藏 模拟退火。。。
    B1060 [ZJOI2007]时态同步 dfs
    P1850 换教室 概率dp
    树链刨分(待修改)
    B3403 [Usaco2009 Open]Cow Line 直线上的牛 deque
    B3402 [Usaco2009 Open]Hide and Seek 捉迷藏 最短路
    B5248 [2018多省省队联测]一双木棋 状压dp
  • 原文地址:https://www.cnblogs.com/yonghome/p/tcpAndUdp.html
Copyright © 2011-2022 走看看