zoukankan      html  css  js  c++  java
  • 02,网络编程

      首先服务端处于鉴定状态,然后客户端发送一条请求syn和安好seq=x,服务端收到请求和暗号开始响应,给客户端发送syn请求,暗号y和响应信号ack=x+1(1表示成功,0表示失败),
    客户端收到来世服务端的暗号与服务端发送的响应信号ack比对,比对成功,成功建立客户端到服务端的数据传输路线.
    注意:如果一直有大量客户端发送syn请求,而没有大量建立服务端到客户端的数据传输路线,则很大程度表明有人在攻击服务端,用这个方法阻碍正常用户的syn请求进入

    数据传输层
    四次挥手:首先服务端成功传输了所有数据给客户端,然后开始发送一条关闭服务端的数据传输线路的请求fin,暗号seq=x+2,客户端接收到请求,响应并关闭了服务端到客户端的数据传输线路,
    并发送响应信号ack=x+3给服务端,服务端收到客户端发送的响应信号并与暗号景象比对,比对成功,得到服务端到客户端的数据传输路线已经关闭的信息.
    等到客户端也成功传输了所有数据,客户端发送关闭客服端到服务端的数据传输路线的请求fin和暗号seq=y+1,服务端收到请求,发送响应信号ack=y+2给客户端,并关闭了客户端到服务端的
    数据传输路线,客户端收到响应信号ack并拿他与暗号进行比对,比对成功,的到客户端到服务端色数据数据传输线路以关闭的信息.
    注意:因为fin_wait1/2都是在很快色时间内完成的,而time_wait则会等待一段时间,如果time_wait等待的时间较长,则很大可能表明有很多用户在使用服务端.
    半连接池:由于建连接时,只能一条条请求的来,有客户端对服务端发送了请求,吓一跳客户就会相似等待,因此有了半连接池,他的工作原理是在客户端请求成功被服务端接手后,服务端不会马上对该请求
    发出响应,只要把这些请求存进半链接池内,只要半链接池没有满,客户端的请求就会进入服务端,如果半链接池满了,那么请求也会被阻拦在外面显示等待,而且半连接池会通过服务端响应最早进入
    的客户端请求,达到泄洪的目的
    注意:半连接池限制的同同一时间的客户端请求数,而非连接数





    2、为何tcp协议是可靠协议,而udp协议是不可靠协议?????

    tcp协议是可靠协议又称好人协议,tcp需要先建立链接,tcp发送数据到客户端口需要等到客户端返还回来,过程可能发生网络断开等原因,只有接受到成功的反馈才会清除数据.
    优点.传输数据安全,可靠. 缺点 效率低下

    UDP协议 :传输数据不用建立链接,找到客户端的端口就丢过去,数据发送完毕就清楚数据,不管客户端是否完全接收
    优点;效率高, 缺点:客户端没接受到信息就把服务端数据清除掉了


    4、标识地址的方式:
    ip+mac就能标识全世界范围内独一无二的一台计算机
    ip+mac+port就能标识全世界范围内独一无二的一个基于网络通信的应用软件
    url地址:标识全世界范围内独一无二的一个资源


    5、tcp协议建立连接与断开连接的状态信息以及表示的意义

    
    

    ----------------------------------------------------------------------------------------------------------------------------end--------------------------------------------------------------------------------------------

     CLOSED:表示关闭状态(初始状态)。

     

    LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接。

     

    SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,随即进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。

     

    SYN_RCVD: 该状态表示接收到SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂。此种状态时,当收到客户端的ACK报文后,会进入到ESTABLISHED状态。

     

    ESTABLISHED:表示连接已经建立。

    FIN_WAIT_1: FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。区别是: FIN_WAIT_1状态是当socket在ESTABLISHED状态时,想主动关闭连接,向对方发送了FIN报文,此时该socket进入到FIN_WAIT_1状态。 FIN_WAIT_2状态是当对方回应ACK后,该socket进入到FIN_WAIT_2状态,正常情况下,对方应马上回应ACK报文,所以FIN_WAIT_1状态一般较难见到,而FIN_WAIT_2状态可用netstat看到。

    FIN_WAIT_2:主动关闭链接的一方,发出FIN收到ACK以后进入该状态。称之为半连接或半关闭状态。该状态下的socket只能接收数据,不能发。

     

    TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,等2MSL后即可回到CLOSED可用状态。如果FIN_WAIT_1状态下,收到对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。

     

    CLOSE_WAIT: 此种状态表示在等待关闭。当对方关闭一个SOCKET后发送FIN报文给自己,系统会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,察看是否还有数据发送给对方,如果没有可以 close这个SOCKET,发送FIN报文给对方,即关闭连接。所以在CLOSE_WAIT状态下,需要关闭连接。

     

    LAST_ACK: 该状态是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,即可以进入到CLOSED可用状态。

     

    tcp第十一种状态:

    CLOSING:这种状态较特殊,属于一种较罕见的状态。正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。


  • 相关阅读:
    React在componentDidMount里面发送请求
    React 术语词汇表
    React里受控与非受控组件
    React和Vue等框架什么时候操作DOM
    【LeetCode】79. Word Search
    【LeetCode】91. Decode Ways
    【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
    【LeetCode】1. Two Sum
    【LeetCode】141. Linked List Cycle (2 solutions)
    【LeetCode】120. Triangle (3 solutions)
  • 原文地址:https://www.cnblogs.com/lijieshi/p/9270858.html
Copyright © 2011-2022 走看看