네 개의 파 소면 TCP 세 방향 핸드 셰이크 과정

도 1은 예시적인 데이터 전송을 도시

1.1 TCP 연결 몇 가지 상태를 설명

  모든 netstat 명령의 결과를 진술한다 :

전체 프로세스 2. TCP 연결 설정 

TCP 연결을 설정하는 2.1 TCP 세 방향 핸드 셰이크

  1) 클라이언트와 서버가 닫힌 상태에 있습니다. (요청을 수락하기 위해 서버로 알려진 클라이언트 동수의 TCP 요청으로 함)
  상태를 듣기에, 열려있는 서비스 포트 2) 서버.
  3) 클라이언트가 접속 요청을 개시한다. 먼저 ACK 응답하여 주어진 패킷에 대해, 서버에 서버 대기 SYN (동기화) 패킷을 전송. = 1 SYN, ACK = 0를 전송 만이 SYN 신호를 전송 함을 나타낸다 . 이때, 클라이언트는 SYN-SENT 상태 (SYN 신호가 전송 됨)이다.
  4) 서버는 SYN 신호가 ACK 응답 메시지를 수신하고, 자신의 연결 요청 신호를 전송 한 후 SYN. 이 경우, 서버는 SYN-RECV 상태 (받았다 SYN도-SYN RCVD에 도시 됨)이다. SYN ACK = 1 = 1을 전송하는 것이 전송 된 SYN + ACK를 나타낸다.
  5) 내 확인 신호 ACK 서버를받은 후 클라이언트와 서버는 SYN하여 전송을 복원하기 위해 다시 서버에 대한 ACK 신호를 전송한다. 이때, 클라이언트가 설정된 상태로 전환, 전송 SYN = 0, ACK = 1 만 ACK를 송신 것을 나타낸다 .
  서버가 ACK 신호를 수신 한 후 6)도 입사 ESTABLISHED 상태. 송신 후에 데이터가이 연결을 통해 수행된다. 세 방향 핸드 쉐이크 스텝 3,4,5-. 쉽게 설명하자면,이 공정 수단 양쪽 요청 및 응답 과정은 : ①A는 요청 대기 B B의 응답에 대한 전송할 SYN; ③A 응답 B]를 동시에 요청 (A)에서 ②B 응답 A를 한

                               

2.2 TCP 연결을 네 번 발표하고, TCP 연결의 전 과정을 흔들었다됩니다

  1) 클라이언트는 전송 FIN (마지막) 요청 메시지 단선 신호. 그 후 클라이언트는 FIN-WAIT-1 상태로된다.
  2) 서버는 확인 응답 신호가 주어지고 FIN 신호를 수신하고 상기 ACK =한다. (1) , 연결 합의 하였다. 이 때, CLOSE-WAIT 상태로 서버. 이 프로세스는 서버 TCP 연결에 대한 클라이언트로부터의 방향을 나타내는 의미 후에 폐쇄되었다는 반 폐쇄 상태에서 전체 TCP 연결.
  3) 클라이언트가 서버의 ACK를 수신 한 후 입사 FIN-WAIT -2- 오프 신호 FIN을 실행하도록 서버를 기다리는 상태. 클라이언트의 FIN-WAIT-2 상태 기다리는 과정에서 서버는 자신의 전송 FIN 신호를 클라이언트에. 이때, 서버로 LAST-ACK의 상태.
  4) 클라이언트는 ACK 신호에 응답하는 서버 FIN 신호를 수신하고, 서버 연결 해제 요청의 수락이 그 클라이언트 TIME-WAIT 상태로 진입 후, 클라이언트가 일정 시간 동안 대기하는 TCP 전체적으로 필요성을 남겼다 (2 * MSL)를 자동으로 입사 CLOSED 상태.
  5) 서버가 클라이언트의 응답 ACK 신호를 수신하고, 클라이언트는 클라이언트 서비스 노하우 방향 TCP 차단, 폐쇄 상태에 직접 액세스하기로했다. 1.2.3.4 흔들며 상기 네 단계이며, 상기 서버에 의해 전송되는 동안 핸드 흔들며 전파의 처리는 :. SYN ACK 및 핸드 동일한 전송 패킷으로 전송되는 것을 제외 유사 ACK와 FIN 스코어 카드 전송.

                               

  참고 : 클라이언트 요청의 단선, 서버가 수동 인 경우, CLOSE-WAIT 상태 많은 수의 연결을 유지할 수는 적극적으로 서버를 요청하는 경우, 그것은 연결의 TIME_WAIT 상태가 많이 남아있을 수 있습니다, 시작 . 각 연결 파일 기술자를 필요로하기 때문에, 당신은 높은 동시성에서 이러한 리소스가 부족하여 실행할 수 있습니다. 따라서, 해당 컨트롤은 일반적으로 커널 설정 파일 수정할 수 있도록, 해당 문제를 발견하는 것이 필요하다 /etc/sysctl.conf에 문제의 일부를 해결하기를.

3. 리눅스에서보기 및 SYN 홍수 공격 방지

  SYN 홍수 공격은 일반적인 DDoS 공격이다. 시간이 매우 짧은 기간에 많은 도구는 더가 SYN = 1, ACK = 0의 많은 수를 전송하는 서버에 TCP 연결 요청을 보내 임의의 포트 IP 지정 거기에 공격자 캔 가짜 서버가 전송 될 응답 패킷과 동일한 SYN TCP 연결 요청을 수신하면, 패킷, 즉 송신 ACK = 1 SYN = 1 패킷은 SYN-RECV 상태로 한 후, 서버, 정상적인 상황에서, 서버는이 기대가받을 ACK 클라이언트 응답. 문제는 서버의 IP 응답 대상, 응답 패킷은 항상 무시되고, 존재하지 않는 시간 제한은 응답 패킷까지 재전송 ACK = 1가 SYN = 1을 계속 한 다음에 ACK 응답을 수신 할 수있다는 것이다. 서버가 SYN 홍수를 손상되면 계속하기 때문에, 0 요청 패킷 그들이 정상적인 SYN 요청이 제대로 처리되지 않도록 자원 큐를 얻을 시간이 가짜가 SYN = 1, ACK = 많은 번호를 받게하고, 서버는 재전송 패킷에 응답하고있다 상태, CPU 리소스를 소비 그래서. 즉,가 SYN 홍수 공격은 심각한 네트워크 혼잡 또는 시스템의 붕괴를 일으킬 수 있습니다, 서버가 느리게 실행하고, 네트워크 대역폭과 CPU 및 메모리 리소스를 많이 소모합니다.

  -lntap 명령 NETSTAT을 사용하면 서버의 iptables 방화벽 /etc/sysctl.conf에 결합 SYN 홍수 공격을 앓고 및 / 폐쇄를 최적화되어 있는지 확인합니다.

[루트 @ xuexi ~] #에서 netstat -tnlpa | 그렙 TCP | | AWK '{$ 6 인쇄}' 종류 | UNIQ -c
      (1) 설립
      7 LISTEN
    256 SYN_RECV

  위의 기준 패킷 친구 공정한 기사의 대부분  https://www.cnblogs.com/f-ck-need-u/p/7397146.html

  

추천

출처www.cnblogs.com/blog-tim/p/11823727.html