TCP 는 들어본 사람이 많을거다. 어쩌면 UDP 도 많이 들어봤을지도 모르겠다.
이 둘을 데이터를 전송하는 방식이다.
UDP 는 성격이 급한 돈키호테고 TCP 는 신중한 햄릿으로 비유할 수 있겠다. (우편과 전화로 비유되기도 한다.)
UDP (User Datagram Protocol)는 상대방이 연락을 받았는지 안 받았는지에 대한 여부는 별로 중요치 않다.
그저 보낼 데이터가 생기면 바로바로 보내버린다.
TCP (Transmission Control Protocol) 는 그에 반해 우아한 방식을 사용한다.
TCP 의 데이터 전송 전에 요청은 다음과 같이 진행된다.
3단계 연결설정
1. 송신자가 수신 가능 여부를 SYN 로 묻는다.
2. 수신자는 수신 요청 허락을 SYN 에 대한 응답을 SYN/ACK로 보낸다.
3. 송신자는 이를 받았음을 알리기 위해 ACK로 보낸다.
데이터 전송 전 이와 같은 일련의 과정을 3-way handshaking라고 한다.
이는 송신자와 수신자의 연결을 확립하는 거다.
이 후 데이터를 전송할때도 TCP 는 대충하지 않고 데이터 전송 후 수신자가 받았는지에 대한 ACK 신호를 받기 전까지 기다리다가 신호가 오지 않으면 오류가 났겠거니 하고 다시 보낸다. ( 아주 세심하다)
TCP 는 당연히 데이터 전송이 끝나고 연결을 종료할 때도 대충하지 않는다.
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 |
'공부 > 네트워크' 카테고리의 다른 글
TCP/IP 전송과정을 알아보자(상세정리) (1) | 2020.09.02 |
---|---|
TCP/IP 방식의 계층 (0) | 2020.08.31 |
데이터 전송 단위 (0) | 2020.08.22 |
ARP 캐시 테이블 & DNS 캐시 테이블 (0) | 2020.08.20 |
네트워크 용어 정리(DNS,DHCP,IP,서브넷마스크 등) (0) | 2020.08.13 |