티스토리 뷰

오늘은 TCP/IP 정의와 플래그(Flag) 정리 해보려고 합니다. 모바일나 웹에서 서버와 데이터를 주고 받기 위해서는 정해진 프로토콜에 기반하여 데이터를 주고 받습니다. 오늘은 통신 프로토콜 중 하나인 TCP/IP를 다뤄보려고 합니다.



TCP이란?


TCP = Transmission Control Protocol 

TCP/IP 통신은 안정적이고, 순서대로, 에러없이 통신하기 위해 만들어진 프로토콜 입니다. 통신 프로토콜에 있어서 기본적으로 꼭 알아두어야 하는 통신 방법입니다. TCP/IP는 HTTP와 달리서버와 클라이언트가 한번 연결이 되면 다른 한쪽에서 끊기 전까지 계속 통신할 수 있습니다. (HTTP는 단방향이여서 한번의 통신은 데이터 한번 전송한다는 방식입니다.) 주로 채팅이나 실시간 방송 등 계속 통신이 이루어져야 하는 상황에서 사용 됩니다.



TCP 안정적인 통신이라고 하는 이유


1. 통신 시작과 종료 과정 : TCP는 통신을 시작하기 위해서 3-handshake와 통신을 끝내기 위해 4-handshake 과정을 거쳐야합니다.


패킷 전송 확인 : ACK(확인 응답 패킷)을 통해 전송한 패킷을 다른 곳에서 잘 받았는지 알 수 있습니다. ACK 패킷이 오지 않으면 패킷이 잘 전달되지 않았다는 것을 알고 해당 패킷을 재전송 합니다. 



연결 성립 과정 (= 3-handshake 과정)


  1. 클리아언트가 서버에 접속 요청 SYN(a)패킷 전송

  2. 서버가 클라이언트 요청을 받고 수락한다는 ACK(a+1)SYN(b)전송

  3. 클라이언트가 서버 수락 응답 패킷을 받고 ACK(b+1) 서버로 보내면 연결 성립


연결 해제 과정 (= 4-handshake 과정)


  1. 클라이언트가 연결 종료를 위한 FIN 플래그 전송

  2. 서버가 요청을 받고 확인 메시지 ACK 보낸다. 데이터 모두 보낼때까지 TIME_OUT 된다.

  3. 데이터 모두 보내고 연결 종료되었다고 클라이언트에게 FIN 플래그 전송

  4. 클라이언트는 FIN 확인 ACK 보낸다.

  5. 서버는 ACK 받고 소켓 연결을 close 한다.

  6. 클라이언트는 서버로부터 못받은 데이터가 있을 경우를 대비해 일정 시간 세션을 남겨 놓고 잉여 패킷을 기다리는 과정을 거진다. TIME_WAIT


TCP 단점


1. UDP에 비해 느리다 : TCP 는 패킷을 매번 보내고 확인하는 형식입니다. 이런 방식은 실시간 영상이나 빠르게 많은 데이터를 보내야 하는 상황에서 느릴 수 있습니다. 물론 해당 데이터가 안전하게 가야하는 경우에는 조금 느려도 사용해야 하지만요.


2. 패킷 재전송 문제 : 상대방에서 응답 패킷이 오지 않는다고 해서 계속 같은 패킷을 전송하면 서버에 문제가 생길 수  있다. 왜냐면 데이터를 받을 수 있는 버퍼의 양은 한정되어 있기 때문이다. 



               

댓글