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、等待报文段从网络中消失,使得旧连接的报文不会在新链接中出现。

  • 相关阅读:
    android之ConnectivityManager简介,网络连接状态
    SPOJ SUBLEX 7258. Lexicographical Substring Search
    poj 2417 Discrete Logging(A^x=B(mod c),普通baby_step)
    设计模式汇总
    微信公众平台预研小结
    Android开发之Handler的用法(源码分享)
    通过ccb(CocosBuilder)文件生成cocos2dx代码
    图像处理之错切变换
    combobox自己主动提示组件加入无选中项清空功能
    php 二维数组传递给 js 问题解决记录
  • 原文地址:https://www.cnblogs.com/afraidToForget/p/10134521.html
Copyright © 2011-2022 走看看