• TCP/UDP


    转自:http://www.cnblogs.com/cy568searchx/p/3711670.html

         http://blog.jobbole.com/64638/

        http://blog.csdn.net/frank3g/article/details/7301312

    三次握手

    TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

    位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

    Sequence number(顺序号码) Acknowledge number(确认号码)

    第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

    第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

    第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

    完成三次握手,主机A与主机B开始传送数据。

    四次分手:
     
    由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
     
    1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送)。
    2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1SYN一样,一个FIN将占用一个序号。
    3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(B可能还有数据没有发送完,A处于FIN_WAIT状态,等B发送完,再发送FIN)
    4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(发送ACK后进入TIME_WAIT状态,B收到ACK后断开连接。A等待了2MSL后没有收到回复,则B已经关闭,A则关闭)
     
    TCP, UDP, HTTP的区别
    HTTP本身是一个协议,基于TCP的
    TCP与UDP的区别:
    1.基于连接与无连接;
    2.对系统资源的要求(TCP较多,UDP少);
    3.UDP程序结构较简单;
    4.流模式与数据报模式 ;
    5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
  • 相关阅读:
    JAVA中的类和对象
    JAVA方法
    JAVA数组
    JAVA流程控制语句
    JAVA常用的运算符
    JAVA中的变量和常量
    JAVA安装及环境变量配置
    linux环境下配置jmeter环境变量
    linux环境下解压文件
    安装程序遇到错误0x80240037
  • 原文地址:https://www.cnblogs.com/zengyou/p/4543402.html
Copyright © 2020-2023  润新知