网络

作者: 紫雨杰 | 来源:发表于2018-06-11 11:21 被阅读0次

    一、TCP

    ● TCP,传输控制协议(Transmission Control Protocol),是面向连接的、可靠的、基于字节流的传输层通信协议。
    ● 它提供计算机之间的可靠无差错的数据传输。应用程序通过 TCP 进行通讯时,数据源和接收目标之间会建立一个虚拟的连接,这个连接一旦建立,
      计算机之间就可以把数据作为双向字节流进行交换。其实基于 TCP 的通信传输的数据帧也不是可靠的,只是在发送 TCP 数据帧的时候,接收端每次
      接收到数据以后就会进行差错验证,如果没有任何问题,就会回馈发送端一个数据帧,告诉它接收成功,发送端就会继续发送第二个数据包。
      通过这样的问答方式就保证了 TCP 传输数据的无差错性。即完成了三次握手,这种行为是靠驱动程序的底层协议来完成的。
    
    ● 应用场景 : 远程连接(Telnet)和文件传输(FTP)、打电话等
    
    
    1、TCP的三次握手四次挥手过程
       ①、建立连接协议(三次握手)
        (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。
        (2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;
             同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。
        (3)客户端必须再次回应服务器一个ACK报文,这是报文段3。
    
    image.png
    2、连接终止协议(四次挥手)
       由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。
         收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,
         而另一方执行被动关闭。
    
     (1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
     (2) 服务器收到这个FIN,它返回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
     (3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
     (4) 客户段返回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。
    
    image.png

    二、UDP

    ●  UDP,用户数据报协议(User Datagram Protocol),是面向无连接的通信协议。
    ●  它是一个无连接的通信协议,UDP 不保证用户数据的可靠性传输,但能向若干个目标发送数据,和接收若干个数据源的数据。如果一台主机向
       另一台主机发送 UDP 数据,这个数据会立即发送出去,而不管另一台主机是否准备好接收数据。当网络状态异常的时候,会造成 UDP 数据报的丢失。
       如果另外一台主机接收到了数据,它不会确认是否收到。
    
    ● 应用场景 : 视频会议 和 发短信等
    
    

    三、TCP与UDP的区别

    UDP
        将数据源和目的封装成数据包中,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
        每个数据报的大小在限制在64k;
        因无连接,是不可靠协议,发送方所发送的数据报并不一定以相同的次序到达接收方;
        不需要建立连接,速度快
    
    TCP
        建立连接,形成传输数据的通道;
        在连接中进行大数据量传输;
        通过三次握手完成连接,是可靠协议,它确保接收方完全正确地获取发送方所发送的全部数据。;
        必须建立连接,效率会稍低
    

    四、Socket

    1、Socket套接字:
      • 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
    
    2、Socket原理机制:
      • 通信的两端都有Socket。
      • 网络通信其实就是Socket间的通信。
      • 数据在两个Socket间通过IO传输。
    

    相关文章

      网友评论

          本文标题:网络

          本文链接:https://www.haomeiwen.com/subject/lkgklftx.html