전송 계층
신뢰할 수 있는 데이터를 순차적으로 전달하는 역할을 한다. 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 만든다. 데이터가 중복되거나 누락되지 않고 오류없이 순서에 맞게 전송되도록 관리한다.
4계층을 배우기 전에 이전까지의 흐름을 알아보자.
1계층: 물리 계층
- 아날로그 신호를 받아 디지털 신호로 만들어 주거나 디지털 신호를 받아 아날로그 신호로 만들어준다.
- 더미 허브라는 통신 기기가 사용되었다.
- 더미 허브를 통해 브로드 캐스팅 방식으로 통신할 수 있다.
- 네트워크의 물리적인 특성을 정의하는 계층이다.
- 어떤 케이블 타입을 쓰는지, 커넥터 타입은 어떤지, 데이터 전송 속도는 얼마로 맞출건지에 대한 결정도 한다.
2계층: 데이터 링크 계층
- 네트워크 내 두 장치의 연결을 담당하는 계층이다.
- 스위치라는 MAC 주소를 저장할 수 있는 기기가 사용되었다.
- MAC 주소란 것이 도입되어 MAC 주소를 통해 네트워크상 원하는 컴퓨터와 통신을 할 수 있다.
- 처음엔 flooding 이라는 기법으로 모든 컴퓨터에 신호를 보내고, 모든 컴퓨터에서 온 신호를 통해 각각 컴퓨터의 MAC 주소를 등록했다.
- 여전히 허브에서 여러 신호가 충돌하지만,
CSMA/CD
기법으로 충돌이 있을 시에 잠시 대기하여 해결했다.
3계층: 전송 계층
- 다른 네트워크에 있는 목적지로 데이터를 전송할 수 있게 해준다.
- 라우터라는 기기가 사용되었다.
- 스위치에 아무리 많은 컴퓨터를 연결해도 '같은 네트워크' 로 보는 반면, 라우터에 연결된 여러개의 스위치는 각각 '다른 네트워크' 로 본다.
- 내가 속한 스위치가 아닌 다른 스위치에 속한 컴퓨터로 신호를 보낼 수 있다.
- IP 주소를 안다면, 라우팅을 통해서 해당 주소까지 도착할 수 있게 됐다.
전송 계층의 필요성
- 오류 점검
- 데이터를 주고 받는 것 까지는 3계층 네트워크 계층까지만 이용하면 충분하다. 하지만, 신뢰성을 확보하기 위해 전송 계층이 필요하다.
- 포트 이용
- 이 데이터가 해당 컴퓨터의 어떤 애플리케이션에 전달되어야 하는지 알기 위해 전송 계층이 필요하다.
전송 계층에서의 선택지: 연결형 통신과 비연결형 통신
연결형 통신 (TCP)
- 신뢰성/정확성을 강조한 통신이다.
- TCP 통신이 이에 속한다.
- 확인 절차가 필요하다.
- HTTP 1.1 등에 이용된다.
비연결형 통신 (UDP)
- 효율성을 강조한 통신이다.
- UDP 통신이 이에 속한다.
- 확인 절차 없이 보낸다.
- 동영상 등에 이용된다.
연결형 통신: TCP 알아보기
4계층에서 TCP를 선택하면, 데이터에 TCP 헤더라는 것이 붙어 캡슐화된다.
TCP 헤더 알아보기
TCP 헤더는 위와 같은 구성으로 이루어져있다. 검증 절차를 가져야 하므로 그에 필요한 정보 때문에 UDP보다 상대적으로 복잡한 헤더를 갖는다.
TCP의 코드 비트
6비트로 이루어진 코드 비트는 위와 같은 플래그로 이루어져있는데, 여기서 주로 사용되는 것은 ACK
, SYN
, FIN
이다.
SYN
: 연결 요청ACK
: 확인 응답FIN
: 종료 요청
TCP의 3way 핸드쉐이크
요청 컴퓨터 A
는SYN
요청을상대 컴퓨터 B
에 보낸다.상대 컴퓨터 B
는ACK
확인 응답을 하고SYN
요청을 보낸다.요청 컴퓨터 A
는ACK
확인 응답을 한다.
위와 같은 3가지 절차를 3way 핸드쉐이크라 한다.
위와 같은 절차가 끝나면
CONNECTION
이 확립된다.
TCP 연결 종료 플래그
연결 종료 시에는 FIN
-> ACK
-> FIN
-> ACK
의 4단계 절차가 일어난다.
일련 번호와 확인 응답 번호의 의미
TCP 헤더의 일련 번호(Sequence Number)
와 확인 응답 번호(Acknowledgement Number)
는 데이터의 시작과 끝을 구분하기 위해 존재한다. 각 32비트를 차지하는 큰 공간이다. 일련번호와 확인 응답 번호가 갖는 의미는 송신측과 수신측에 따라 다르다.
- 송신측
- 일련 번호: 현재 보내는 데이터의 시작 번호
- 확인 응답 번호: 전체 데이터의 끝 번호
- 수신측
- 일련 번호: 전체 데이터의 끝 번호
- 확인 응답 번호: 현재까지 받은 데이터의 끝 번호
위와 같은 형식으로 이용된다. 위는 한 번에 데이터를 50바이트만큼 전송하는 예시이다. 50바이트와 같이 한번에 전송되는 데이터의 단위를 세그먼트라고 한다.
만일, 일련 번호나 확인 응답 번호가 어긋난 경우와 같이 데이터가 손상 혹은 유실되면 일정 시간 대기한 후에 데이터를 재전송하며 이를 재전송 제어라고 한다.
윈도우 크기의 의미
윈도우 크기는 세그먼트를 일시적으로 저장하는 버퍼의 한계 크기를 말한다. 즉, 얼마나 많은 용량의 데이터를 저장해둘 수 있는지를 나타내는 크기이다.
TCP 통신에서는 이 버퍼 크기에 들어갈만큼 최대한의 데이터 세그먼트를 수신측에 보낸다. 송신측은 다회의 세그먼트 송신을 버퍼크기만큼 한번에 하고, 수신측은 송신된만큼 다회의 확인 응답을 한번에 한다.
포트 번호 알아보기
- 포트 번호는
0~65535
(16비트) 까지 사용할 수 있다. 0~1023
(0000 0001 1111 1111
) 까지는 예약된 포트번호이다.- 이를 well-known port라고 한다.
1024
번 포트는 예약되어있지만 잘 사용되지 않는다고 한다.
통신 애플리케이션의 주요 포트번호
SSH
: 22SMTP
: 25DNS
: 53HTTP
: 80POP3
: 110HTTPS
: 443
웹 브라우저의 송신 포트
- 웹 브라우저의 포트는 임의의 포트가 자동으로 할당된다.
- 서버 측은 포트번호를 명확히 정해두어야 하지만 클라이언트 측은 정하지 않아도 괜찮다.
비연결형 통신: UDP 통신 알아보기
- TCP와 반대로
신뢰성
보다는효율성
을 중시한다. - 영상과 같이 끊기면 안되는 스트리밍 서비스에 자주 이용된다.
데이터에 위와 같은 헤더를 씌워진 데이터를 UDP 데이터그램이라 한다.
UDP의 장점: 브로드 캐스트가 가능하다.
- 응답을 확인하지 않는 이점을 이용해서 할 수 있는 대표적 기능이다.
- 다수의 컴퓨터에 송신을 해도 확인 응답을 받지 않는다.
- TCP는 다수의 컴퓨터에 송신을 하면 일일이 확인 응답을 받고 CONNECTION을 확립해야 한다.
전송 계층 정리
데이터를 받아서 TCP Segment
혹은 UDP Datagram
중 하나의 전송 계층 헤더를 데이터에 붙여 캡슐화한다. 혹은 TCP Segment
혹은 UDP Datagram
중 하나의 헤더가 붙은 데이터를 비캡슐화 한다.
레퍼런스
'네트워크 > OSI Layers' 카테고리의 다른 글
OSI 5, 6, 7 (세션, 표현, 응용) 계층과 Updated TCP/IP Model (0) | 2023.03.23 |
---|---|
OSI 3 계층 네트워크 계층 (Network Layer) 알아보기 (2) | 2022.09.05 |
OSI 2계층 데이터 링크 (Data Link Layer) 계층 알아보기 (2) | 2022.09.04 |
OSI 1계층 물리 계층 (Physical Layer) 알아보기 (1) | 2022.09.04 |