TCP 제어 플래그 (Control Flag)

동동이·2021년 12월 21일

먼저 TCP 제어 플래그는 TCP통신을 할때 헤더의 붙는 일종의스테이터스 코드이다 연결 상태를 나타내는데 SYN(Synchronization), ACK(Acknowledgement), FIN(Finish), RST(Reset), PSH(Push), URG(Urgent)가 있다.
먼저 SYN 이녀석은 두 호스트간의 연결을 맺기 위한 3-way handshake프로세스의 첫 번째 단계 쓰이는데, 요 프로세스가 머냐면 먼저 클라이언트가 서버에게 접속을 요청하는데 이때 SYN 패킷을 보낸다. 그 패킷을 받은 서버는 클라이언트에게 SYN/ACK 패킷을 보낸다. 여기서 잠깐! 방금 나온 ACK는 상대로부터 패킷을 받았다를 나타내는 Control Flag이다. 졸지에 ACK까지 설명했는데 어쨋든 서버로부터 SYN/ACK패킷을 받은 클라이언트는 서버가 보낸 패킷을 받았다는 의미로 ACK패킷을 보내면서 서버와 연결을 하는것이다. 이왕 설명한김에 4-way Handshake도 설명하자면, 아까 3-way handshake는 tcp연결을 초기화하기 위한것이라면, 4-way handshake는 세션을 종료하기 위한 프로세스이다. 그래서 맨처음에 SYN패킷보낼때 그 대신, FIN 패킷을 보내는데 여기서 FIN은 더 이상 보내고자하는 데이터가 없을때를 나타낸다. 그렇게 FIN패킷을 받은 서버는 받았다는 의미로 ACK패킷을 보내고, 잠시 서버도 연결을 끊겠다는 의미로 똑같이 FIN패킷을 보낸다. 서버로부터의 FIN패킷을 받은 클라이언트가 마지막으로 ACK패킷을 보내면 비로소 연결이 종료된다. 그 다음 RST는 연결에 문제가 생겼을때 초기화를 위해 보내는 컨트롤 플래그이고, PSH는 좀 설명이 필요한데, 보통 전송계층에서 패킷을 보낼때, 효율을 위해 전송할 데이터를 축척한뒤에 보낸다. 하지만 채팅과 같이 빠른 응답이 필요한 경우에는, PSH플래그를 1로 설정하면 세그먼트를 바로바로보낼 수 있다. 마지막으로 URG는 긴급한 데이터를 보낼때 사용하는데, 이 플래그가 설정되있으면 전송큐의 맨 앞으로 보내지게 된다.

번외편) 포트포워딩에 대해 아라보자
포트포워딩이란 외부네트워크에서 특정포트로 요청이 왔을때 공유기가 내부 네트워크중 특정포트에 해당하는 장치와 연결해주는것을 의미한다.

profile
보안 공부하는 사람

0개의 댓글