TCP/IP协议栈基础知识

设计思想

     把一个复杂的事物进行分层划分,使得每个部分变得相对简单

分层模型

    OSI分为7层模型   tcp/ip分为四层模型

     应用层(Application)
     传输层(Transport)
     网络层(Internet)
     网络访问层(Network Access)

TCP特性

   1.工作在传输层

   2.面向连接协议

      在通讯的过程中有一个协商的过程,需要确保两者之间有一个稳定的,可靠的连接状态.

   3.全双工的协议

       可以同时双向发送数据

   4.半关闭

       关闭是单方向的   一方关闭连接只表示关闭方不再发送数据,但不代表不接收对方的数据包.

   5.错误检查

   6.将数据打包成段,排序

   7.确认机制

   8.数据恢复,重传

   9.流量控制,滑动窗口

   10.拥塞控制,慢启动和拥塞避免算法

TCP包头

    0-15       16个位      2个字节             表示源端口            2^16  = 65536个端口号 

    16-31     16个位      2个字节             表示目标端口

     32位                       4个字节             表示当前本机发送数据包的编号

     32位                       4个字节             表示确认号  标识对方主机发送的数据包的编号  告诉对方主机下次需要发送数据包的编号

     4位                         数据偏移           表示tcp包的头部有多长

     前面固定有20个字节的长度  +  不固定长度的选项长度

     三个重点标记位: 实现TCP可靠传输的关键

       ACK      确认接收标志

       SYN     同步请求标志

             客户端向服务端发送第一个连接TCP数据包的时候会把SYN变成1

             服务端响应客户端发送的连接第一个TCP包头中的SYN也等于1

        FIN    结束连接标志

        使用tcp发送数据之前,必须先通过三次握手 然后才能进行数据的发送和接收

       

TCP三次握手

    第一次握手:    客户端给服务端发送第一个同步消息把SYN设为1

    第二次握手:    服务端给客户端发送回应的消息把SYN设为1  ACK设为1         表示服务端能正常接收客户端的数据包

    第三次握手:    客户端回应服务端消息把ACK设为1                                          表示客户端能正常接收服务端的数据包

    1.客户端 SYN           2.服务端 SYN  ACK       3.客户端  ACK

TCP四次挥手

   1.建立连接一般是由客户端首先向服务器端发起请求的,服务器端只进行监听.

   2.但是断开连接的分手请求可以是任意方(可以是客户端也可以是服务端)来首先发起的,谁先把数据传输完成,谁就可以发送断开连接请求的数据包

   3.首先发送FIN=1的一方 表示自己不再会向对方发送任何数据,但是还会接收对方发送过来的数据 (半关闭的特性)

   4. 2MSL时间表示是消息的最大生存期   1个MSL表示两个数据包正常发送的时间

   5.首先提出断开连接方最后需要等待2MSL的时间是因为理论上对方会先把还没发完的数据先发给自己最后才会发送FIN=1的数据包,但是

      每个数据包在传递的过程中选择的路径是不一样的,可能会出现数据包先发后到的情况.这段时间是用来接收可能在FIN=1包到达后其它还没有

      到达本机的数据包.

   6.A FIN     B ACK    B FIN      A  ACK     

   

TCP的SYN(同步攻击)

       当客户端向服务端首先发起一个SYN的同步消息后,服务器会立刻向客户端返回ACK消息同时等待客户端返回ACK消息.

       在服务器等待客户端ACK消息的这段时间,服务器需要消耗一定的内存空间来存储当前的连接信息.此时如果客户端是一些

       大量不存在的主机,那么服务器迟迟得不到客户端ACK响应导致内存无法释放这些资源最终把服务器的内存空间消耗干净.

 

 TCP确认

     Winodow Size 的值   表示TCP每次可以发送的数据包的个数,而不是一个包一个包的发送,提高数据包的发送效率

UDP传输协议

UDP包头
      16bit        2个字节            源端口
      16bit        2个字节            目标端口
      16bit        2个字节            内容长度
      16bit        2个字节            checksum
      data        发送内容

UDP特性

      1.工作在传输层

      2.提供不可靠的网络访问

      3.非面向连接的协议

      4.有限的错误检查

      5.传输性能高    没有tcp协议的握手机制

      6.无数据恢复的特性

 

猜你喜欢

转载自www.cnblogs.com/yxh168/p/8971329.html