강의를 보며 필기하였지만, 나중에 기억하기 어려울 것 같으므로 블로그로 포스팅합니다.
강의내용 + 추가로 알아본 내용이 있습니다.
TCP에 대한 정의를 해보자면
전송 제어 프로토콜(Transmission Control Protocol, TCP, 문화어: 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다. TCP는 전송 계층에 위치한다.
@위키백과
위키백과에서는 위와 같이 정의하고 있다.
간단히 설명하자면 TCP는 전송제어 프로토콜이며, 안정적으로, 순서대로, 에러없이 데이터를 교환할 수 있도록 도와주는 장치라고 생각하면 된다.
IP 패킷에서는 출발지IP, 목적지IP, 기타..를 감싼 메시지로 데이터가 출발되지만 TCP가 추가가 된다면, 출발지Port, 목적지Port, 전송제어, 순서, 검증정보 등 더 세세한 정보들을 가지고 출발하게 된다.
여기서
SYN : 접속요청
ACK : 요청수락 이다.
즉 1. SYN은 나 서버에 접속할게 허용해줘
이런 뜻이고
2. SYN + ACK는 알겠어. 허용해줄게. 나도 접속 허용해줘
3. ACK 는 알겠어
라는 뜻을 내포하고 있다.
클라이언트가 서버에 데이터를 보내면 서버는 클라이언트에게 데이터 잘 받았어 혹은 데이터 못받았어 라는 메세지를 다시 보내게 된다.
이 과정에서 클라이언트는 서버가 데이터를 정확히 받았는지 못받았는지 확인할 수 있다.
클라이언트 쪽에서 패킷1, 패킷2, 패킷3 순서대로 데이터를 서버에 보내면 서버는 해당 패킷들을 받는데, 여기서 서버 입장에서 패킷1, 패킷3, 패킷2 이런식으로 데이터를 받으면 서버는 패킷3부터 데이터를 전부 삭제하고 클라이언트에게 패킷2부터 다시 줘 라는 요청을 하게 된다.
그러면 클라이언트는 패킷2부터 다시 데이터를 보내게 된다.
그렇다면 UDP는 무엇일까?
UDP는 사용자 데이터그램 프로토콜이라고도 한다.
정리하자면, IP와 거의 같고 + Port + 체크섬 정도만 추가된 형태이다.
또한, 애플리케이션에서 추가 작업이 필요하다.
체크섬은 이 메시지가 맞는지 안맞는지에 대한 체크를 한다는 것이고 Port는 만약에 컴퓨터에 2개 이상의 어플리케이션이 돌아간다면 (같은 IP에) 패킷이 음악을 위한 패킷인지, 게임을 위한 패킷인지 모르게 된다.
이럴때 구분해주는 것을 Port라고 한다.
최근에 UDP가 뜨는 이유는 TCP는 고정적이다. 그리고 느리다. 하지만 UDP는 도화지와도 같고 빠르다 라는 장점이 있다. 따라서 최적화를 잘 한다면 데이터를 빠르게 주고받을 수 있기때문에 각광 받고 있다.