포트번호
컴퓨터 프로그램끼리 데이터를 어떻게 주고 받을까?
컴퓨터끼리 데이터를 주고 받는다는 말은 무엇일까?
- 이는 클라이언트-서버 개념이라 할 수 있다.
👉 예를 들면 게임 서버와 게임(클라이언트)가 데이터를 어떻게 주고 받는 것을 생각할 수 있다.
4계층에서 하는 일
- 4계층은 '전송계층'이며 송신자의 프로세스와 수신자의 프로세스를 연결하는 서비스이다.
👉 프로세스: 메모리에서 동작중인 프로그램
👉 예를 들면 내 컴퓨터의 카톡과 상대방 컴퓨터의 카톡이 통신을 하도록 만드는 일이다.
- 프로토콜 종류
- TCP 프로토콜: 연결을 지향함(연결이 된 다음 데이터를 보냄)
- UDP 프로토콜: 비연결 지향형 프로토콜(연결을 지향하지 않음)
포트 번호
- 포트 번호: 4계층에서 사용하는 주소
- 특정 프로그램이 '포트 번호'를 사용하게 된다.
👉 프로그램 하나가 포트 번호 하나만 사용할 수 있다. 다시 말해, 하나의 포트는 하나의 프로세스만 사용 가능하다.
👉 상대방의 여러가지 프로그램들은 내 포트 번호 하나와 연결이 가능하다.
포트 번호의 큰 분류 3가지
Well-known 포트
잘 알려진 유명한 프로그램들이 쓰는 포트 번호이다.(0~1024)
웹툰을 보려고 네이버에 접속하려면 80번 포트를 이용해 네이버 서버(http)에 접근하게 된다.
Registered 포트
예약된 포트번호
Dynamic 포트
일반 사용자들이 사용하는 포트 번호이다.
시작 포트 번호~ 마지막 포트 번호 중 아무거나 하나 사용하게 된다.
- 시작 포트 번호: 49152
- 마지막 포트 번호: 65535
👉 내 프로그램은 시작~ 마지막 중 하나 골라서 상대방의 서버(80 혹은 443)와 연결할 수 있다.
👉 크롬으로 네이버에 접속할 때 나는 가령 웹 브라우저에 49153 포트를 사용하고 웹 서버 접근을 위해 80번을 쓸 수 있다.
프로그램의 연결 정보 확인하기
활성 연결 테이블
- 현재 포트 활성 여부를 확인할 수 있다.
- 연결 정보 확인시 아래의 명령어를 이용한다.(CMD)
netstat -ano
UDP 프로토콜(비연결 지향형)
- User Datagram Protocol의 약자로 전송 방식이 단순하고 연결된 상태로 데이터가 전달되는 것이 아니어서 서비스의 신뢰성이 낮다.
- 데이터가 손실될 수 있어 큰 파일을 전송하지는 않는다.
UDP 프로토콜 구조
- 8바이트로 이루어져 있다.
- 출발지 포트번호
- 목적지 포트번호
- 길이: UDP 프로토콜 헤더 길이 + 페이로드
UDP 프로토콜을 사용하는 프로그램
- DNS 서버가 UDP 프로토콜을 사용한다.
👉 "www.naver.com"이라 검색하면 DNS가 IP 주소를 알려주게 되는데, 이 때 UDP 프로토콜을 사용해서 알려준다.
- tftp 서버: UDP로 파일을 공유한다.
- RIP 프로토콜: 라우팅 정보를 공유한다.
👉 라우터들끼리 서로 정보를 공유해서 최신 라우팅 테이블을 알 수 있게 해준다.