您的位置:首页 > 理论基础 > 计算机网络

计算机网络基础知识总结-TCP

2017-12-17 15:43 751 查看
  最近花时间把计算机网络的基础知识恶补了一把,打算做个总结整理

。今天这篇先记录下TCP的相关知识。

  首先,TCP/IP的体系结构如下:



  在TCP/IP的体系结构中,网络层使用IP协议,提供主机到主机的逻辑通信;运输层提供的是应用进程到应用进程的逻辑通信,运输层有两种不同的传输协议:

  1. 面向连接的TCP

  2. 无连接的UDP

  

  一、UDP

      UDP协议比较简单,只是在IP数据报服务的基础上增加了一点点功能,主要特点是:

      1. UDP是无连接的,即发送数据之前不需要先建立连接。

      2. 尽最大努力交付,即不保证数据可靠交付。

      3. 面向报文,UDP对应用进程交下来的报文,既不合并,也不拆分,在添加首部后就向下交付给IP层。

      4. 无拥塞控制。

      5. 支持一对一、一对多、多对一、多对多通信。

      UDP报文的首部格式有4个字段,每个字段占2个字节,总共8个字节:

   


  

  二、TCP

       TCP协议非常复杂,不同于UDP协议的不可靠交付,TCP协议提供可靠交付,数据可以无差错、不重复、不丢失。主要特点有:

      1. TCP是面向连接的,即应用进程在TCP通信前,必须先建立TCP连接。在数据传送完毕后,必须释放已建立的TCP连接。

      2. 一条TCP连接只能有两个端点,即只能一对一通信。TCP连接的端点叫做套接字(Socket),套接字由ip地址+端口号构成,

即: 套接字 socket = (ip地址 : 端口号)。

      3. 可靠交付。TCP实现可靠传输的原理,是依靠确认重传机制、滑动窗口机制实现的,具体介绍参考《计算机网络 谢希仁编著》

      4. 全双工通信。

      5. 面向字节流。

      TCP报文的首部,前20个字节是固定的,后面可以按需增加4n个字节(n为整数)。

      


      各字段的意义:

      1. 序号,TCP传送的是字节流,每个字节都按顺序编号,序号字段就是指 当前本报文段所包含的数据(一段字节流)的第一个字节的序号。

      2. 确认号,是期望收到对方下一个报文段的第一个字节的序号,比如,B正确收到了A发送过来的一个报文段,其序号是101,数据长度是100字节(101~200),则B期望收到的下一个数据序号就是201,那么B在发送给A的确认报文段中,就把确认号置为201。

      3. 数据偏移,首部的长度。

      4. URG,=1表示首部紧急指针字段有效。

      5. ACK,=1表示首部确认号字段有效。

      6. PSH,推送操作。

      7. RST,重置位,=1表示TCP连接出现严重差错(比如主机崩溃)。

      8. SYN,同步位,在建立TCP连接时使用。当SYN=1,ACK=0时,表示这是一个连接请求报文段,若对方同意建立连接,则在响应报文段中使SYN=1,ACK=1。

      9. FIN,终止位,在释放TCP连接时使用。当FIN=1,表示此报文段的发送方 数据已发送完毕,要求释放TCP连接。

     10. 窗口,当前允许对方发送的数据量,这个值是动态变化的。

     TCP连接的建立,这个过程称作三次握手:

     


    
       TCP连接的释放,这个过程称作四次挥手:

      


     关于连接的建立和释放过程,可以用wireshark抓取网络包实际感受下,相关教程可以参考:

     http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

      关于TCP连接过程更详细的解释,可以参考下面这篇文章:

     https://www.cnblogs.com/Jessy/p/3535612.html

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: