데이터링크 계층에서는 노드에서 노드로 메세지가 전달되는 과정에 여러 프로토콜들이 있다(규칙 명시). 또한 네트워크 계층에서는 인터넷과 같은 임의의 네트워크 안에서 네트워크 마지막에 붙어있는 컴퓨터(종단시스템 = 호스트)들 끼리 주고받는 내용에 집중한 프로토콜들이 해당한다. 그래서 네트워크 계층에서 가장 중요한 기능이 라우팅(routing-최적경로 선택하는 과정)이 된다.
여기서 오늘은 수송계층(Transport)
에 대해서 자세히 알아볼 것이다. 각 컴퓨터 내에는 응용서비스 즉, 프로그램이 돌아간다. 여기서 실행중인 프로그램을 프로세스라고 하는데 이런 프로세스들 간에 메시지 전달에 관여하는 것이 수송계층의 역할이다.(process-to-process delivery)
* 그림출처
위에 그림을 보면 순서대로
데이터링크 계층
에서는 통신장치들 끼리node to node
로 전달되고네트워크 계층
에서는 송신자 컴퓨터와 목적지 컴퓨터 사이에서host to host
로 전달된다. 또한 마지막에수송 계층
에서는 그 컴퓨터들 안에 들어있는 특정 프로세스들 간의 통신에 관한 역할을 담당한다.
일반적으로 인터넷은 서비스를 요청하는 클라이언트
와 서비스를 제공하는 서버
의 형태로 구성된다. 만약 사용자가 여러개의 웹 브라우저(클라이언트)를 접속한다면, 서버측에서 오는 정보가 어느 클라이언트 것인지 구분을 해야할 것이다. 여기서 어느 클라이언트 즉, 응용프로세스들을 구분하는 구분자가 필요하게 되는데 그게 바로 포트 번호
이다.
포트번호
- IP주소를 가진 컴퓨터에서 여러개의 프로세스를 구분하기위해 사용함(수송 계층에서 사용하는 주소)
- 포트번호는 16비트로 구성되어 있고 10진수로 나타내면
0 ~ 65535
사이의 값을 가짐- 논리적인 값(물리적 연결 아님!)
클라이언트 포트
우리가 웹 브라우저 열고 닫기를 자유자재로 하듯 클라이언트 프로세스는 생성과 소멸을 반복하게 된다. 그러다보니 클라이언트의 포트번호는 대체로 운영체제
에 의해 할당되게 된다. 이러한 포트는 일시적으로 할당되고 웹 브라우저에서 나가게 되면 사라지고 그 후 접속한 다른 프로세스에게 다시 할당될 수 있기 때문에 임시포트번호(ephemeral port number)
라고 한다.
서버 포트
서버 프로세스는 클라이언트에게 상시 서비스를 하기때문에 항상 서비스를 할 수 있는 체제로 유지되어 있다. 그러므로 서버 포트는 고정적으로 할당되고 그를 모두 알고 있어야 하기 때문에 알려진 포트 번호(well-known port numbers)
라고 한다.
http프로토콜의 포트번호는 80번으로 고정되어있다.
즉 http://www.google.com
이렇게 있을 때
구분 | 의미 | 용도 |
---|---|---|
http:// | 포트번호 | 프로세스 확인 |
www.google.com | IP주소 | 컴퓨터확인 |
포트번호는 IANA(Internet Assigned Numbers Authority)
라는 기관에서 관리되고 있다.(따라서 개발자 마음대로 지정할 수 없음)
IANA는 포트번호를 다음과 같이 3가지의 영역으로 구분한다.
UDP는 User Datagram Protocol의 약자로서 수송계층에서 많이 사용되는 프로토콜중 하나이다.
비신뢰성
(목적지까지 도달하는걸 보장하지 않음), 비연결형
(연결 설정과 해지할 필요가 없음), 수송 프로토콜
로서 흐름제어나 에러제어가 없는 단순한 프로토콜이다.체크섬(Checksum)
등으로 에러를 검출할 수 있긴한데 에러가 검출된다면 복구하는 행위 없이 그냥 폐기해버린다.(체크섬은 선택사항임!)UDP/TCP 포트목록을 보면 53번에 DNS(Domain Name Sevice)프로토콜이 있는 것을 알 수 있고 161번과 162번에는 SNMP라는 프로토콜이 있는데 이는 네트워크 관리용도로 사용되는 포트번호이다.
UDP에서 사용하는 메시지에서 헤더는 8바이트의 고정된 크기를 갖는다. (IP헤더는 가변)
또한 위에 언급한 것과 같이 체크섬은 선택사항으로 체크섬의 값이 계산되지 않으면, 해당 필드의 값은 0이 된다.
UDP의 체크섬 계산은 기존 IP나 ICMP와는 달리 가상헤더
를 만들어서 계산한다. 가상헤더는 IP 패킷의 헤더
에서 가져온 정보로 구성하게 되는데 송신지 IP주소
, 목적지 IP주소
, 프로토콜필드
, 전체 길이 필드
로 구성되어 있다. IP헤더가 잘못되면 잘못된 호스트나 잘못된 수송계층 프로토콜로 전달될 수 있음으로 한 번더 검사하기 위해 가상헤더를 붙여서 확인한다.
* IP에서 프로토콜 필드는 IP위에 올라가는 여러 프로토콜중에 어느 하나를 구분하는 구분자 역할을 함
IP와 다른점
- IP는 데이터를 확인하지 않고 헤더만 확인
- UDP는 데이터 확인을 선택할 수 있음(체크섬)
위의 그림과 같이 UDP 체크섬 Datagram을 보면 위에 검은색 3줄은 가상헤더로 P주소
, 목적지 IP주소
, 프로토콜필드
, 전체 길이 필드
가 들어있다.
그 밑에 분홍색 2줄은 UDP헤더로 송신자 포트번호
, 목적지 포트번호
, 전체 길이 필드
가 들어있다. 여기서 가상헤더 부분의 전체 길이필드는 IP 패킷의 헤더에서 가져온 부분이고 UDP헤더 부분은 UDP 자체의 길이이다.
앞서 특징에서 언급했듯 UDP는 비연결형 서비스를 제공한다. 비연결형이란 앞에 나간 UDP와 뒤에 오는 UDP간 즉, Datagram들 사이에 서로 관련이 없는것을 말한다. 그로 인한 특징들은 다음과 같다.
🤯