728x90




패킷을 수신하게 되었을 때 포트가 listen상태에 있을 경우와 닫힌 상태에 있을 경우 서로 다른 반응을 보이게 된다.

즉 자세한 사항은 사항은 TCP헤더의 codebits부분를 좀 더 살펴보도록 하자.



  • URG : Urgent Field가 유효하다.
  • ACK : ACK Field가 유효하다.
  • PSH : TCP가 즉시 이 메시지의 데이터를 상위계층 프로세스에게 전달해야 한다.
  • RST : 복구할 수 없는 오류 때문에 Virtual Circuit를 초기화하기 위해 사용된다.
    초기화의 이유로는 호스트 Crash 또는 중복 SYN 패킷의 지연 등이 있을 수 있다. TCP 세그먼트는 RST가 수신되면, 수신자는 즉시 연결을 종료시키는 것으로 응답해야 한다. 초기화를 하면 양쪽이 즉시 연결과 모든 자원을 해제하게 된다. 결국 데이터의 전송이 양방향으로 중단되어 송신중이던 데이터가 없어질 수 있다.
  • SYN : Virtual Circuit 연결의 시작을 나타내기 위해 사용된다.
  • FIN : 송신측의 Byte Stream이 종료되었음을 나타내기 위해 사용한다

방화벽의 경우에는 Destination Port중 서비스를 오픈할 것인지에 따라 포트번호를 열어놓는다.

웹서비스를 제공하는 경우에는 해당 IP주소의 80번 포트번호를 열어둔다.

만약 FTP서비스를 제공하지 않고자 할 경우에는 21번 포트와 20번 포트번호를 열어놓지 않는다.

방화벽뿐만 아니라 홈페이지 서비스를 가동중인 리눅스 서버의 경우에도 마찬가지이다.

하나의 리눅스서버에 FTP서버와 WEB서버를 동시에 제공중이라면 해당되는 포트번호를 열어놓는다.

이처럼 포트번호가 열려있는 경우에는 어떤 응답을 하고 닫혀있는 경우에는 어떤 응답을 하는지 그림으로 나타낸 것이 위의 그림이다.

TCP에 대한 사항은 RFC793에 명시되어 있다.

  • Port가 listen 상태일 경우
    • RST비트가 1로 세팅되어 있다면 응답하지 않는다.
    • RST비트가 0으로 세팅되었을 경우에는
    • 다음에 ACK비트가 1인지를 조사한다. 만약 1이면 즉시 연결을 종료시키는 RST로 응답을 한다.
    • ACK비트가 0이면 다음에 SYN비트가 1인지 조사한다.
    • SYN비트가 0이면 응답하지 않는다. 그러나 SYN=1이면 연결을 허락할 것인지를 판별한다.
    • 연결을 허락한다면 SYN/ACK로 응답한다.
    • 연결을 허락하지 않는다면 즉시 연결을 종료시크는 RST로 응답한다.

 

블로그 이미지

Link2Me

,