2, 3계층은 목적지를 잘 찾아가기 위한 주소 제공이 목적이었지만, 실제 서비스는 출발지에서 목적지까지 잘 찾아 가는 것 뿐만 아니라 애플리케이션이 정상적으로 돌아가기 위한 다양한 작업에 문제가 없어야만 서비스를 정상적으로 제공 할 수 있다.
4계층에서 동작하는 프로토콜은 목적지 단말 안에서 동작하는 여러 애플리케이션 프로세스 중 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 잘 조합해 원래 데이터를 잘 만들어내기 위한 역할을 한다.
4계층 프로토콜(TCP, UDP)과 서비스 포트
여기서도 인캡슐레이션과 디캡슐레이션 개념이 들어간다. 각 계층에서 정의하는 헤더가 추가되고 여러 정보가 들어간다. 그 중 가장 중요한 두 가지 정보는
- 각 계층에서 정의하는 정보
- 수신측의 동일 계층에서 사용하기 위한 정보
- 예를 들어, 2계층 헤더의 MAC 주소 정보는 수신 측의 2계층에서 확인하고 사용됨
- 상위 프로토콜 지시자 정보
- 디캡슐레이션 과정에서 상위 계층의 프로토콜이나 프로세스를 정확히 찾아가기 위한 정보
- TCP/IP 프로토콜 스택에서 4계층의 상위 프로토콜 지시자는 포트 번호임
- 포트번호는 출발지와 목적지를 구분해 처리 해야 함
포트
Well known 포트: 인터넷 주소 할당 기구인 IANA에 등록되고 1023번 이하의 포트 번호를 사용함
- HTTP TCP 80
- HTTPS TCP 443
- SMTP TCP 25
Registered 포트: 다양한 애플리케이션에 할당하기 위한 포트
- 1024 ~ 49151
- IANA에 등록되어 관리되지만 공직 번호와 비공식 번호가 혼재되어 있고 사설 포트 번호로 사용되기도 함
동적, 사설, 임시 포트
- 49152 ~ 65535
- 자동 할당 되거나 사설 용도로 할당되고 클라이언트의 임시 포트 번호로 사용됨
TCP
신뢰할 수 없는 공용망에서도 정보 유실이 없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷에 잘 전송되었는지 확인하는 기능이 있음.
- 패킷에 번호(Sequence number) 부여: 잘 전송되었는지에 대한 응답(ACK Number)
- 얼마나 보내야 수신자가 잘 받아 처리할 수 있는지 전송 크기(Window Size)까지 고려해 통신함
패킷 순서, 응답 번호
TCP에서는 분할된 패킷을 잘 분할하고 수신측이 잘 조합하도록 패킷에 순서를 주고 응답 번호를 부여한다.
- 패킷에 순서를 부여하는 것: 시퀀스 번호
- 응답 번호를 부여하는 것: ACK 번호
이 두 번호가 상호 작용하여 순서가 바뀌거나 중간에 패킷이 손실된 것을 파악할 수 있다.
윈도 사이즈와 슬라이딩 윈도
TCP는 일방적으로 패킷을 보내는 것이 아니라 상대방이 얼마나 잘 받았는지 확인하기 위해 ACK 번호를 확인하고 다음 패킷을 전송한다. 패킷이 잘 전송되었는지 확인하기 위해 별도 패킷을 받는 것 자체가 통신 시간을 늘리지만 먼 거리에 떨어져 있으면 왕복 지연시간(Round Trip Time, RTT)이 늘어나므로 응답을 기다리는 시간이 더 길어진다.
작은 패킷을 하나 보내고 응답을 받아야만 하나를 더 보낼 수 있다면 비효율 적일 것이다. 그래서 Window Size를 늘려 한 번에 많은 패킷을 보내고 응답을 하나만 받게 할 수 있다. 다만, 네트워크 상태가 안 좋으면 패킷 유실 가능성이 커지므로 적절한 송신량을 결정해야 한다.
- 윈도 사이즈: 한 번에 데이터를 받을 수 있는 데이터의 크기
- 슬라이딩 윈도: 윈도 사이즈를 조절하는 것
3방향 핸드셰이크
목적지가 데이터를 받을 준비가 안 된 상황에서 데이터를 일방적으로 전송하면 목적지에서는 데이터를 정상적으로 처리할 수 없어 데이터가 버려진다. TCP 프로토콜은 이런 상황을 만들지 않기 위해 통신 전, 데이터를 안전하게 보내고 받을 수 있는지 미리 확인하는 작업을 거치는데, 이 중 3번의 패킷을 주고받으면서 통신을 서로 준비하는 것을 ‘3방향 핸드셰이크’라고 한다.
3방향 핸드셰이크 과정이 생기다보니 기존 통신과 새로운 통신을 구분하기 위해 헤더에 플래그(Flag)라는 값을 넣어 통신한다.
UDP
TCP와 달리 4계층 프로토콜이 가져야할 특성이 거의 없다. 4계층의 특징인 신뢰 통신을 위한 내용(시퀀스 번호, ACK 번호, 플래스, 윈도 사이즈)이 없다. 데이터 전송을 보장하지 않는 프로토콜이라 중간데 데이터가 유실되더라도 버려도 되는 서비스에서 사용된다.
- 화상회의 서비스
- 데이터 전송이 양방향으로 일어나고 시간에 애무 민감하게 반응하므로 TCP에서는 오히려 사용자가 네트워크 품질이 나쁘다고 생각한다.
ARP
Address Resolution Protocol
통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 되는데, 이 때 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이다.
데이터 통신은 2계층의 물리적 주소인 MAC 주소와 논리적 주소인 IP주소 이렇게 두개가 사용되는데, 이 둘은 전혀 연관성이 없으므로 두 개의 주소를 연계시켜주기 위한 매커니즘이 필요하다. 이 때 사용되는 프로토콜이 바로 ARP이다.
ARP는 물리적 주소와 논리적 주소를 연결해준다.
네트워크 장비에서의 ARP 작업은 하드웨어 가속으로 처리되지 않고 CPU에서 직접 수행하므로 짧은 시간에 많은 ARP 요청이 들어오면 네트워크 장비에서는 큰 부하로 작용하기 때문에 해커들이 이를 악용하여 다량의 ARP를 공격해 네트워크 장비를 무력화 시킨다.
ref
IT 엔지니어를 위한 네트워크 입문(고재성, 이상훈 지음)을 읽고 정리한 포스트입니다.
Previous
‘[Network] IP 주소’ -> Previous
Next
‘[Network] 서브넷과 게이트웨이’ -> Next