티스토리 뷰
포트?
포트는 전송계층에서 데이터가 어떤 애플리케이션(웹 서비스, 데이터베이스)에게 전달되어야 하는지, 목적지를 구분하는 역할을 담당한다. 이는 TCP 헤더의 출발지 포트(Source Port)와 목적지 포트(Destination Port)로 표현된다.
애플리케이션은 각각의 포트를 가지고 있고, 목적지 포트로 해당 데이터를 전송해 준다.
포트 번호를 마치 방의 호수로 생각하면 편하다. IP가 아파트의 주소라면 포트는 각 집의 호수이다.
IP를 보고 아파트까지 도착한 데이터는 포트를 확인하고 실제 데이터를 수신받는 애플리케이션에 도달한다.
이 포트는 16비트의 숫자로 표현되어 0번부터 65535번가 될 수 있다.
하지만 애플리케이션이 원하는 포트를 모두 사용할 수 있는 것은 아니다.
Well-Known 포트라고 하여 0번부터 1023번까지는 주요 프로토콜이 사용하도록 예약되어 있다.
따라서 1024번 이상부터 자유롭게 사용이 가능하고 임의로 할당될 수 있다.
Note:
1024부터 49151번까지는 또 등록된 포트라고 하여, IANA(인터넷 할당 번호 관리기관)에 등록된 특정 애플리케이션들이 사용하는 포트이다. (예: 3306는 MySQL을 위한 포트이다.)
하지만 꼭 이를 지켜야 하는 것은 아니고 필요하다면 다른 애플리케이션을 해당 포트에 할당 가능하다.
포트는 언제, 누가 할당해?
전송을 받는 포트, 즉 목적지 포트는 각 애플리케이션이 실행될 때 할당된다는 것을 직감적으로 알 수 있다.
그러면 출발지 포트는 언제 할당될까?
이를 위해 인터넷 연결을 위해 웹브라우저에서 특정 사이트에 접속한다고 생각해 보자.
가장 먼저 웹 브라우저는 웹 페이지를 받아오기 위해서 HTTP 포트인 80번 포트로 접근 시도하게 된다.
이때 TCP 연결을 설정하기 위해 TCP 헤더에서 사용할 클라이언트 쪽 포트, 즉 출발지 포트가 필요하다.
따라서 이때 사용 중이지 않은 포트를 검색해 임의로 선택하여 할당한다.
그럼 포트는 누가 할당하고 언제 할당이 해제될까?
포트는 운영체제에 의해 통적으로 할당된다. 사용되고 있지 않는 포트를 찾아서 임의로 할당해 주고, 혹시나 사용 가능한 포트를 모두 할당한 경우 여러 방법을 사용해 사용하지 않는 포트를 찾아 새로 포트를 할당해 준다.
보통 포트는 연결이 종료되면 할당이 해제된다. 하지만 바로 할당이 해제되지 않고, 연결을 종료한 후 잠시 동안 유지된다. 이를 TIME_WAIT 상태에 있다고 하며, TCP 연결이 완전히 종료되고 패킷이 소멸될 때까지 남아있는다. 그리고 일정 시간이 지나면 운영체제가 할당을 해제한다.
'Computer Science 이야기 > TIL (Today I Learned)' 카테고리의 다른 글
[네트워크] 쿠버네티스 Ingress가 이상해진 이유 (0) | 2023.06.12 |
---|---|
[네트워크] 로드밸런싱과 HAProxy를 공부해보자 (K8s HA구성) (2) | 2023.06.11 |
[Frontend] Typescript, React 그리고 둘을 같이. (0) | 2023.05.10 |
[Frontend] Why Typescript? (0) | 2023.05.09 |
[아키텍처] 완벽한 설계는 없다. (0) | 2023.05.06 |
- Total
- Today
- Yesterday
- 프로그래머스
- 프론트엔드
- 개발자밋업
- 합격
- SW마에스트로
- boj
- 개발자
- 오픈소스
- ssi-at
- 후기
- 네트워크
- python3.8
- 코딩테스트
- 회고
- github
- python
- devcon
- 파이썬
- 오픈소스기여
- 클린코드
- 노개북
- 백준
- 대전
- 타입스크립트
- 노마드코더
- 기계식 키보드
- DevOps
- 개발자북클럽
- IT대외활동
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |