zoukankan      html  css  js  c++  java
  • TCP UDP

    UDP

    udp是无连接的,即发送数据前不需要建立连接。

    udp使用最大努力交付,即不保证可靠交付。

    udp是面向报文的。应用层的报文下发后既不合并,也不拆分,由应用层控制报文长度。

    udp没有拥塞控制,适用于实时性高的情景。

    udp支持一对一,一对多,多对一,多对多的交互通信。

    upd首部开销小。

    TCP
    tcp是面向连接的应用层协议。

    tcp连接是一对一的。

    tcp提供可靠交付的服务。无差错(CRC校验),不丢失(丢包重传),不重复,按序到达。

    tcp提供全双工通信。

    tcp是面向字节流的。tcp把数据看做是无结构的字节流来处理。tcp不保证发送方和接收方的数据块具有对应的大小关系,但保证接收方接受到的字节流和发送方发出的字节流是完全一样的。

    udp、tcp比较:

    udp无连接,tcp有链接。udp尽最大努力交付,tcp保证可靠交付。udp面向报文,tcp面向字节流。udp支持一对一、一对多、多对多、多对一,tcp支持一对一。udp没有拥塞控制,适合实时性高的情景,tcp提供拥塞控制。

    OSI 七层协议

    1、物理层:传输比特位(0,1),可以是电缆、光缆、无线通信等。

    2、数据链路层:传输帧。每一帧包括数据和必要控制信息。

    3、网络层:选择合适路由,传输ip数据报

    4,、运输层:为进程间通信提供的通用的数据传输服务。运输层复用:多个应用层进程同时使用下面的运输层服务。运输层分用:运输层把受到的信息分别交付上面应用层中的相应进程。

    5、应用层:实现进程间的通信和交互。应用层交互的数据单元叫做报文。

    TCP三次握手:

    tcp 客户端和服务器端是不对等的。客户端主动打开连接,服务器被动打开链接。

    1、client发送请求连接报文,进入syn-sent同步已发送状态。

    2、server收到请求报文,发送确认。进入syn-rcvd同步收到。

    3,、client收到确认,进入established已建立连接。发送确认报文。

    4,、server收到确认,进入established已建立连接。

    第三次握手保证服务器不会因为无效请求而建立连接。

    TCP四次挥手:

    1、A发送连接释放报文,停止写数据,从established进入fin-wait-1终止等待1状态。

    2、B发送确认,进入close-wait关闭等待状态。此时,tcp连接处于半关闭状态。B到A方向的链接未关闭。

    3、A收到确认后进入fin-wait-2,等待B发送连接释放报文。

    4、B发送连接释放报文,停止写入数据。进入last-ack

    5、A发送确认,进入time-wait,2msl后关闭。  MSL最长报文段寿命

    6、B收到确认,关闭连接

    time-wait等待2msl的意义:

    1、可以通过重传确认来避免最后一个ack丢失。

    2、等待报文段从网络中消失,使得旧连接的报文不会在新链接中出现。

  • 相关阅读:
    @终极解密输入网址按回车到底发生了什么
    jgitflow-maven-plugin报错:The authenticity of host can't be established.
    java log4j2日志行号不显示问题
    Prometheus监控之grafana常用模板编号记录
    DM数据守护
    使用IntelliJ IDEA 配置Maven(入门)
    IntelliJ IDEA lombok插件的安装和使用
    idea svn连接https报错问题: E230001: Server SSL certificate verification failed: certificate issued
    SVN安装后,右键不显示SVN菜单项
    IntelliJ IDEA怎么配置svn,集成svn方法
  • 原文地址:https://www.cnblogs.com/afraidToForget/p/10134521.html
Copyright © 2011-2022 走看看