zoukankan      html  css  js  c++  java
  • 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.无数据恢复的特性

    IP网络层协议

         切片发送大数据包

      

    DOS拒绝服务攻击

         通过ping命令不断的向服务器发送大量的大数据包,由于客户端每次向服务器发送一个包服务器就必须要响应一个包.造成占用服务器大量的cpu和网卡资源.

  • 相关阅读:
    C#微信公众号的开发——服务配置
    JavaJDBC整理
    JavaSet接口、唯一元素和Map接口整理
    Java泛型、List接口整理
    Java集合、Iterator迭代器和增强for循环整理
    Java基础内部类、包的声名、访问修饰符、代码块整理
    Java基础super关键字、final关键字、static关键字、匿名对象整理
    Java基础构造方法和this关键字整理
    Java抽象类、接口整理
    Java封装、继承整理
  • 原文地址:https://www.cnblogs.com/yxh168/p/8971329.html
Copyright © 2011-2022 走看看