본문 바로가기
공부/네트워크

UDP 방식과 TCP 방식

by 맑은청이 2020. 8. 21.
728x90
반응형

TCP 는 들어본 사람이 많을거다. 어쩌면 UDP 도 많이 들어봤을지도 모르겠다.

이 둘을 데이터를 전송하는 방식이다. 

UDP 는 성격이 급한 돈키호테고 TCP 는 신중한 햄릿으로 비유할 수 있겠다. (우편과 전화로 비유되기도 한다.)

 

UDP (User Datagram Protocol)는 상대방이 연락을 받았는지 안 받았는지에 대한 여부는 별로 중요치 않다. 

그저 보낼 데이터가 생기면 바로바로 보내버린다. 

 

TCP (Transmission Control Protocol) 는 그에 반해 우아한 방식을 사용한다. 

 

TCP 의 데이터 전송 전에 요청은 다음과 같이 진행된다. 

 

3-way handshaking

3단계 연결설정 

1. 송신자가 수신 가능 여부를 SYN 로 묻는다.

2. 수신자는 수신 요청 허락을 SYN 에 대한 응답을 SYN/ACK로 보낸다. 

3. 송신자는 이를 받았음을 알리기 위해 ACK로 보낸다. 

 

데이터 전송 전 이와 같은 일련의 과정을 3-way handshaking라고 한다. 

이는 송신자와 수신자의 연결을 확립하는 거다. 

 

이 후 데이터를 전송할때도 TCP 는 대충하지 않고 데이터 전송 후 수신자가 받았는지에 대한 ACK 신호를 받기 전까지 기다리다가 신호가 오지 않으면 오류가 났겠거니 하고 다시 보낸다. ( 아주 세심하다) 

 

TCP 는 당연히 데이터 전송이 끝나고 연결을 종료할 때도 대충하지 않는다. 

 

 

4-way terminating

4단계 연결 종료

1. 송신자는 데이터 전송 끝을 알리는 FIN 을 보낸다.

2. 수신자는 이에 대한 답으로 ACK을 보낸다.

3.하지만 데이터 처리를 아직 안 끝냈을 수도 있기 때문에 처리가 다 끝나면 FIN으로 최종적으로 데이터 처리까지 끝났음을 알려준다.

4. 송신자는 FIN 정보를 받았음을 ACK 로 알려주면서 연결을 종료한다. 

 

 

과정을 듣기만 해도 TCP 는 연결이 안전할거 같다는 느낌이 빡빡 든다.  

 

단계 동작 방식 사용 신호
전송 전 3-way handshaking SYN/ACK
전송 중 전송 후 응답 대기  PUSH/ACK
전송 후 4-way terminated FIN/ACK

 

 

 

netstat -n 명령어를 통해 외부와의 연결 상태를 확인할 수 있다. 

 

보면 IP 주소 옆에 붙여진 숫자들을 볼 수 있다. 여기선 54890,443 등이 보인다. 

이는 무엇일까?

'포트(port)' 다. 

 

포트는 뭘까?

MAC 주소가 IP 주소에 대한 물리적 주소였다면 포트는 가상주소이다. 일단은 이 정도로만 알아두자.

 

그리고 포트 번호와 IP 주소를 통칭소켓(Socket) 이라고 부른다. 

소켓은 운영체제가 논리적인 방식에 따라 서로 떨어진 두 대의 호스트를 연결해주는 인터페이스를 의미한다. 

 

IP주소(인터넷 계층)가 32비트일때 MAC 주소(데이터 링크 계층)는 48비트이고 포트번호(전송 계층)는 16비트이다.

 

 

 

아직 포트를 잘 이해하지 못했다고 하더라도 다음 포트 번호는 중요하니 기억하도록 하자!

 

포트번호 해당 서비스 비고
20/21 FTP TCP
22 SSH TCP
23 TELNET TCP
25 SMTP TCP
53 DNS  UDP/TCP
67/68  DHCP UDP
80 HTTP TCP
110  POP3 TCP
161/162 SNMP UDP/TCP
443 SSL TCP

 

728x90
반응형