먼저 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는 긴급한 데이터를 보낼때 사용하는데, 이 플래그가 설정되있으면 전송큐의 맨 앞으로 보내지게 된다.
번외편) 포트포워딩에 대해 아라보자
포트포워딩이란 외부네트워크에서 특정포트로 요청이 왔을때 공유기가 내부 네트워크중 특정포트에 해당하는 장치와 연결해주는것을 의미한다.