OSI 7계층 모델과 TCP/IP 모델 모두 전송 계층을 명시적으로 가지고 있다. 이는 전송 계층의 역할이 분명하고 중요하다는 것을 암시한다. 전송계층이란 무엇일까? 왜 필요할까? 지금 알아보자.
1. 전송 계층의 존재 이유
1) 오류 점검 기능
여기 TCP/IP모델이 있다. TCP/IP 모델은 크게 3가지 파트로 나뉘어질 수 있다. Application/Transport/Internet, Network Interface. 애플리케이션 층은 유저와 소통하는 층, 인터넷, 네트워크 층은 목적지까지 데이터를 보내는 층이다. 이때 두 층 모두 데이터의 신뢰성에 대해서는 신경쓰지 않는다. 각 층이 모두 캡슐화된 채로 분업화가 되어있기 때문이다. 이에 데이터가 목적지까지 제대로 갔는지 확인하기 위한 층이 필요하다.
2) 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별
오류를 점검해서 특정 서버 혹은 컴퓨터까지 데이터가 전송되었더라도 컴퓨터 내 어느 애플리케이션으로 도달할지 모를 수 있다. 이를 알려주는 것 또한 전송 계층에서 담당하며, 포트번호를 이용하여 해결한다.
2. 전송계층의 통신 종류
전송계층에는 신뢰성/정확성에 중점 가치를 둔 연결형 통신, 효율성에 중점 가치를 둔 비연결형 통신이 있다. 연결형 통신은 상대방이 누군지 확인하면서 통신하고 비연결형은 상대방을 확인하지 않고 데이터를 보낸다. 언뜻 보면 연결형 통신이 더 좋은 것 아닌가 생각할 수 있지만, 용도가 다르게 쓰일 수 있다. TCP는 신뢰도를 중시하기 때문에 동영상 스트리밍 서비스와 같이 데이터를 확인하는 것 보다 원활한 재생이 더 중요한 경우에는 비효율적이다. 이에 비해 UDP는 데이터를 효율적으로 전송하는 것에 중점을 두기 때문에 더 원활한 영상 재생을 할 수 있다.
연결형 | 비연결형 | |
통신 의사 고려 | O | X |
애플리케이션 고려 | O | O |
중점 가치 | 신뢰성, 정확성 | 효율성 |
프로토콜 | TCP(Transport Control Protocal) | UDP(User Datagram Protocol) |
3. 연결형 통신, TCP 프로토콜이란?
1) TCP에 대해 설명하시오
- 요약: 전송 계층에서 연결형 통신 프로토콜이다. 신뢰성과 정확성에 중점 가치를 뒀다. TCP헤더를 포함한 캡슐화된 데이터 구조를 세그먼트(segment)라고 부른다.
TCP가 어떻게 말 그대로 Transport control(전송 제어)를 하는지 살펴보자. 두 컴퓨터간 통신을 시작하려면 우선 '연결 확립'을 이행해야한다. 이는 가상의 독점 통신로이며, 이를 확보해야 데이터 전송을 할 수 있다. 연결 확립하는 방법은 TCP의 헤더를 살펴보면 알 수 있다. TCP 헤더에는 코드 비트(Code bit)라는 영역이 있다. 코드 비트는 6비트의 연결 제어 정보가 기록되는 곳이며, 이를 가지고 3 way-handshake 방법을 사용하여 클라이언트와 서버간 통신이 가능한지 확인한다.
2) 3 way handshake란?
- 요약: TCP 프로토콜에서 연결 확립을 하기 위한 3차례의 데이터 전송 과정. TCP 헤더 내 코드비트 영역의 SYN, ACK 비트를 활용한다.
- 과정: 연결을 확립하려면 두 컴퓨터가 서로 데이터를 보내도 되는지 확인하는 과정이 필요하다.
- 클라이언트가 서버에게 SYN 비트를 1로 설정하여 Syncronize(연결 확립)해도 되는지 요청한다.
- 서버가 클라이언트의 메세지를 받고 ACK 비트를 1로 설정하여 Acknowledgement(응답) 연결 확립 응답한다. 서버도 클라이언트에게 메세지를 보내야하므로 SYN 비트를 1로 설정하여 연결 확립 요청한다.
- 클라이언트가 서버로부터 ACK, SYN를 받은 후 ACK=1로 연결 확립 응답을 한다.
3) 4 way handshake란?
- 요약: 전송 계층의 TCP 프로토콜에서 연결 종료를 하기 위한 데이터 전송 과정이다.
- 과정: 연결 종료를 할 때도 연결 종료 요청을 위한 요청 & 응답 과정이 필요하다. 4 단계로 구성된다.
- 클라이언트가 서버에게 연결 종료 요청을 한다. FIN = 1
- 서버가 클라이언트에게 연결 종료 응답을 한다. ACK = 1
- 연결 확립 시 서버도 클라이언트에게 SYN를 보냈기에, 서버가 클라이언트에게 연결 종료 요청을 한다. FIN = 1
- 클라이언트가 서버에게 연결 종료 응답을 한다. ACK = 1
4) 일련번호 확인 응답번호 필요성 및 구조?
- 요약: TCP는 신뢰성에 중점 가치를 둔 프로토콜이였다. 신뢰성를 보장하는 기능 중 하나는 오류 없이 보내려는 데이터를 보내는 것이다. TCP는 보낸 데이터가 제대로 도착했는지 확인하고, 미전송 됐으면 재전송 하는 기능인 '재전송 제어'가 있다. 이러한 오류 없이 데이터를 보내는 과정은 TCP 헤더의 일련번호와 응답번호(그림5 3,4번)로 진행된다.
- 과정: 일련 번호는 '이 데이터가 몇번째 데이터'인지 알려준다. 확인 응답 번호는 수신 측이 송신 측에 몇번째 응답데이터를 받았는지 알려주는 동시에 새로 요청할 데이터 번호를 말해준다. 그림6을 보며 아래 두 과정이 반복되는 것을 이해하자.
- 왼쪽이 클라이언트, 우측이 서버일 때 클라이언트는 200바이트 크기의 일련번호=3001 데이터를 보낸다.
- 서버는 이를 수신 후, 확인 응답 번호로 3201을 적으면서 두가지를 말해준다. 난 3001을 받았어요, 다음 데이터인 3001 + 200 = 3201을 주세요.
TCP는 위와 같은 과정을 거쳐 데이터 통신의 신뢰성을 보장한다. 하지만 모든 데이터를 보낼때 마다 주고-받고를 반복한다면 비효율적일 것이다. 보낼 때 한번에 여려개 보내고 받을 때도 받았다고 한번에 여러개를 보내면 효율적일 것이다. 따라서 그림 6과 같은 방식이 아닌 그림 7과 같은 방식을 사용한다.
그림 7과 같이 일련번호와 확인 응답번호를 교환하며 통신하면 통신 효율이 좋아질 것이다. 하지만 문제 상황이 있을 수 있다. 보내는 쪽이 받는 사람이 받을 수 있는 것 보다 많이 보내버리면 받는 사람은 보내는 양을 감당 못할 것이고, 이로 인해 데이터가 넘쳐(오버플로) 데이터가 유실될 수 있다. 이에 보내는 사람은 받는 사람의 세그먼트 보관장소(버퍼) 크기를 알고 있어야한다.
5) 윈도우 크기?
- 요약: 컴퓨터가 세그먼트를 받아서 저장하고 있을 수 있는 버퍼의 한계 값을 저장하는 TCP 헤더 값.(그림5 8번 참조)
- 과정: 그렇다면 일련 번호와 확인 응답 번호를 이용하여 데이터를 주고 받기 전에 서로 윈도우 크기를 알고 있어야한다. 통신을 위해 연결을 확립하는 과정인 3 way handshake을 통해 미리 윈도우 크기를 알 수 있다(윈도우 제어)(그림8 참조).
4. 포트 번호란?
- 정의: 포트 번호란 특정 프로세스나 네트워크 서비스를 식별할 수 있는 논리 구조다(출처: 위키피디아).
전송 계층의 두번째 역할은 원하는 애플리케이션으로 정보를 보내는 것이다. 컴퓨터에 통신 데이터가 들어오면 포트번호를 참조하여 필요한 애플리케이션으로 정보를 보낼 수 있다. 포트 번호의 위치는 <그림5>의 1, 2번에 있다. 포트 번호는 크게 두가지로 분류될 수 있다. 0-1023번은 잘 알려진 포트(well-known ports) 1024번은 예약 돼있지만 사용되지 않는 포트고, 1025-2^16-1은 랜덤 포트로서 클라이언특 측의 송신 포트로 사용된다. 클라이언트는 자신의 포트를 랜덤하게 설정한 뒤, 서버 측의 포트를 적어 통신을 개시한다. 자주 사용되는 포트를 기억하자.
5. 비연결형 통신, UDP 프로토콜이란?
- 요약: 전송 계층에서 효율성에 중점을 둔 데이터 전송 방식, 프로토콜. User datagram protocol라고 불리우며, UDP 헤더를 붙인 캡슐화된 데이터를 UDP 데이터그램이라고 부른다. 신뢰성 확보를 위한 과정이 필요 없기 때문에 TCP와 달리 일련번호 및 윈도우 크기가 필요하지 않다.
브로드캐스트 방식에는 UDP 프로토콜이 쓰인다. 브로드캐스트 방식은 랜 안에 있는 컴퓨터에게 일괄 전송하기 때문에 일일히 연결 확립하는 것이 비효율적이기 때문이다. 이에 브로드캐스트 방식에는 빠르고 효율적으로 데이터를 보낼 수 있는 UDP가 사용된다.
'네트워크' 카테고리의 다른 글
[네트워크] 5. 무선 LAN(랜)이란? 통신 방식? 전송 제어? (0) | 2022.02.22 |
---|---|
[네트워크] 4. 이더넷이란? 통신 방식? 전송 제어? Easy with TMI (0) | 2022.02.21 |
[네트워크] 3. OSI 7계층, TCP/IP 모델이란? 개념 및 존재 이유? (0) | 2022.02.15 |
[네트워크] 2. 월드와이드웹(WWW), 프로토콜(Protocol)이란? (0) | 2022.02.14 |
[네트워크] 1.네트워크와 종류(LAN, WAN, 인터넷) 및 ISP란? (0) | 2022.02.13 |