본문 바로가기

네트워크

UDP방식, TCP방식

인터넷 공간에서 데이터를 보내는 방식이다. 

서양에서는 사람을 특징에 따라 흔히 돈키호테 유형과 햄릿 유형으로 분류하곤 한다. 돈키호테는 저돌적인 성격인 반면, 햄릿은 매우 신중한 성격이다. 인터넷 공간에서 데이터를 전송할 때도 이처럼 돈키호테 유형의 전송 방식과 햄릿 유형의 전송 방식이 있다. UDP방식이 돈키호테 유형에 해당하고, TCP방식이 햄릿 유형에 해당한다.

 

UDP 방식

송신 측 호스트에서 송신 데이터가 생기면 곧바로 수신 측 호스트에게 전송을 수행한다. 수신할 수 있는지 여부는 고려하지 않는다. 전송 중 오류도 고려하지 않고 무조건 전송만 수행한다.

TCP 방식

SYN신호를 주고 SYN(역으로 동기화), ACK(수락 신호)를 받으며 다시 ACK 신호 전송을 수행한다.

이러한 3단계 동기화 과정을 마친 뒤 송신 측과 수신 측 사이에 실제 데이터를 주고받는다.

전송 전에 수행하는 과정을 3단계 연결 설정이라고 부른다.

구분 동작 방식 사용 신호
전송 전 3단계 연결 설정 수행 SYN, ACK
전송 중 실제 데이터 송수신 수행 PUSH, ACK
전송 후 3/4단계 연결 종료 수행 FIN, ACK

전송 후 4단계 연결 종료란, 송신 측에서 FIN신호를 보냈을 때, 수신 측에서 데이터를 처리중이라면 ACK신호를 먼저 보내고 끝낸 뒤 FIN신호를 보낸다.

 

3단계 연결 설정과 3/4단계 연결 종료를 수행할 수 있는 이유는 버퍼링 방식 때문이다.

 

두 방식을 버퍼링 유무에 따라 구분할 수 있다.

UDP 방식의 경우에는 버퍼링 기능이 없어 일방적인 전송만 수행한다. 반면 TCP 방식의 경우에는 버퍼링 기능이 있어 송신자와 수신자 사이에 3단계 연결설정과 3/4단계 연결 종료 같은 일련의 상호작용이 가능하다. 따라서 UDP 방식은 시간에 민감한 환경에서 사용하고, TCP 방식은 안정적인 전송을 요구하는 환경에서 사용한다.

 

- cmd창에 netstat -n을 입력

172.30.1.19번과 127.0.0.1번 사이에서 tcp 3단계 연결 설정을 마치고 실제 데이터를 주고받는 상태다.

위의 결과를 자세히 보면 54892, 49408 같은 숫자를 볼 수 있다. 이것을 포트번호라고 한다.

포트 번호와 IP주소를 통칭해 소켓이라고 부른다.

소켓

소켓은 즉, 운영체제가 논리적인 방식에 따라 서로 떨어진 두 대의 호스트를 연결해주는 인터페이스를 의미한다. 또한 소켓 생성은 운영체제가 통신에 필요한 내부 자원을 할당한다는 의미이기도 하다.

포트번호

맥 주소와 IP 주소처럼 인터넷 공간에서 사용하는 주소다. 맥 주소가 48비트이고 IP 주소가 32비트라고 한다면, 포트 번호는 16비트로 이루어진 주소다. 맥 주소가 물리적 주소에 해당한다면, 포트 번호는 가상적 주소에 해당한다.

구분 크기 구성체계 비고
포트 번호 16비트 단일 체계 전송 계층
IP 주소 32비트 네트워크  ID와 호스트 ID 인터넷 계층
맥 주소 48비트 OUI와 일련번호 데이터 링크 계층

 

 

출처: 해킹 입문자를 위한 TCP/IP 이론과 보안 2/e | 오동진, https://coding-factory.tistory.com/614