OSI 모델 4계층인 전송 계층에 대해 알아보자.
Lesson 23. 전송 계층의 역할
1. 전송 계층의 두 가지 역할
- 네트워크 계층을 설명할 때 다른 네트워크로 데이터를 전송하려면 라우터가 필요하고, 라우터의 라우팅 기능을 사용하여 전송할 수 있다고 했다.
- 그렇다면 라우터의 라우팅 기능을 통해 데이터를 전송하더라도 목적지에 도착하지 못할 수도 있을까?
- Yes! 라우팅 정보가 잘못될 수도 있고, 많은 라우터를 경유하는 도중에 라우터에 문제가 생기거나 패킷이 손상될 수도 있기 때문
- 물리 계층, 데이터 링크 계층, 네트워크 계층의 3계층이 있으면 목적지에 데이터를 보낼 수 있다. 하지만 데이터가 손상되거나 유실되더라도 이들 계층에서는 아무것도 해주지 않음
- 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다. 어떻게 전달하는지?
- 전송 계층에는 오류를 점검하는 기능이 있어 오류가 발생하면 데이터를 재전송하도록 요청한다.
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능이 있다.
2. 연결형 통신과 비연결형 통신
- 전송 계층의 특징
- 신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것
- 효율성 : 데이터를 빠르고 효율적으로 전달하는 것
- 연결형 통신
- 신뢰할 수 있고 정확한 데이터를 전달하는 통신
- 상대편과 확인해가며 통신하는 방식
- TCP(Transmission Control Protocol, 전송 제어 프로토콜) 사용
- 비연결형 통신
- 효율적으로 데이터를 전달하는 통신
- 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식
- UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜) 사용
- 동영상을 보낼 때 사용
- 동영상은 신뢰할 수 있고 정확한 데이터 전송보다 빠른 전송이 필요하기 때문에 데이터가 늦게 도착해서 화면이 버벅거리는 동영상을 보는 것보다 데이터가 약간 유실되더라도 원할하게 보는게 좋기 때문
Lesson 24. TCP의 구조
1. TCP란?
- 전송 계층 프로토콜 중 연결형 통신 방식, 신뢰할 수 있는 데이터 전송을 보장한다.
- 3-way 핸드셰이크로 연결이 확립된 후에 데이터를 전송하고, 확인 응답을 한다.
- 데이터 전송 도중에 오류가 발생하면 재전송하거나 포트 번호로 애플리케이션을 구분하여 데이터를 정확하게 전달하기 위한 기능이 있다.
- TCP로 전송할 때 붙이는 헤더를 TCP 헤더라고 하며, TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
- 데이터를 전송하기 전에 먼저 연결(connection)이라는 가상의 독점 통신로를 확보한 후 연결을 확립한 후에 데이터를 전송할 수 있다.
- 코드 비트는 TCP 헤더의 107번째 비트부터 112번째 비트까지 6비트로 연결의 제어 정보가 기록된다.
- 각 비트별로 역할이 있는데, 초기값은 0이고 비트가 활성화되면 1이된다. 연결을 확립하려면 SYN(연결 요청)과 ACK(확인 응답)가 필요하다.
2. 3-way 핸드셰이크란?
- SYN과 ACK를 사용한 연결 확립 과정
- 통신을 하려면 컴퓨터 2에게 허가를 받아야 하므로, 먼저 컴퓨터 1에서 컴퓨터 2로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다.
- 컴퓨터 2는 컴퓨터 1이 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)를 보낸다. 동시에 컴퓨터 2도 컴퓨터 1에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.
- 컴퓨터 2의 요청을 받은 컴퓨터 1은 컴퓨터 2로 허가한다는 응답으로 연결 확립 응답 (ACK)를 보낸다.
이처럼 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것을 3-way 핸드셰이크라고 한다.
- 연결을 끊을 때는 FIN(연결 종료)과 ACK를 사용한다.
Lesson 25. 일련번호와 확인 응답 번호의 구조
1. 일련번호와 확인 응답 번호란?
- 3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 일련번호와 확인 응답번호를 사용한다.
- 일련번호
- 송신 측에서 수신 측에 해당 데이터가 몇 번째 데이터인지 알려준다.
- 전송된 데이터에 일련번호를 부여하면 수신자는 원래 데이터의 몇 번 째 데이터를 받았는지 알 수 있다.
- 확인 응답 번호
- 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 한다.
- 이 번호는 다음 번호의 데이터를 요청하는데도 사용된다.
2. 윈도우 크기란?
- 매번 확인 응답을 기다리는 대신 세그먼트를 연속해서 보낸 후 다음에 확인 응답을 반환하면 효율이 높아진다.
- 받은 세그먼트를 일시적으로 보관하는 장소(버퍼)가 있어 세그먼트가 계속 쌓여도 괜찮다.
- 버퍼 덕분에 세그먼트를 연속해서 보내도 수신 측은 대응할 수 있고 확인 응답의 효율도 높아진다.
- 수신 측이 대량으로 세그먼트를 받아서 처리하지 못하는 경우 보관하지 못하고 넘쳐 버리는데 이것을 오버플로라고 한다.
- 오버플로가 발생하지 않도록 버퍼의 한계 크기를 알고 있어야 하는데, 그것이 TCP 헤더의 윈도의 크기에 해당하는 값이다.
- 윈도우 크기는 얼마나 많은 용량의 데이터를 저장해 둘 수 있는지 나타낸다.
- 3-way 핸드셰이크를 하는 동안에 서로의 윈도우 크기를 확인하고 있고, 수신 측의 버퍼 한계 값을 알면 세그먼트(데이터)를 오버플로되지 않도록 보낼 수 있다.
- 서로 윈도우 크기를 알고 있다면 확인 응답을 받지 않고도 세그먼트(데이터를)를 연속적으로 전송할 수 있어 효율적이다.
Lesson 26. 포트 번호의 구조
1. 포트 번호란?
- 전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하기 위해 출발지 포트 번호와 목적지 포트 번호가 필요하다.
- 포트 번호는 0~65535번을 사용할 수 있다.
- 0~1023번 포트는 주요 프로토콜이 사용하도록 예약되어 있고, 잘 알려진 포트라고 한다. 일반적으로 사용하는 서버 측 애플리케이션에서 사용되고 있다.
- 1024번은 예약되어 있지만 사용되지 않는 포트고, 1025번 이상은 랜덤 포트라고 해서 클라이언트 측의 송신 포트로 사용된다.
- TCP는 어떤 애플리케이션이 사용되고 있는지 구분하기 위해 포트 번호가 필요하다.
- 웹 브라우저로 접속할 때 웹 브라우저에는 임의의 포트가 자동으로 할당된다.
Lesson 27. UDP의 구조
1. UDP란?
- 정보를 서로 주고받을 때 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다.
- 연결을 맺을 필요가 없는 정보를 보내거나 받는다는 신호도 필요하지 않다.
- 비연결형 통신이며 데이터를 효율적으로 빠르게 보낼 수 있다.
2. UDP 헤더란?
- UDP 헤더가 붙은 데이터를 UDP 데이터그램이라 한다.
- 신뢰성과 정확성이 필요하지 않고 효율성과 빠른 속도가 중요해서 상대방을 확인하지 않고 연속해서 데이터를 보낸다.
- 전송속도가 TCP에 비해 빠르다.
- 브로드캐스트
- 네트워크의 모든 컴퓨터와 장비에 같은 패킷을 일괄 전송하는 방식이다.
- 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다.
- TCP는 확인 응답을 하나씩 보내야 하기 때문에 브로드캐스트 같이 불특정 다수에게 보내는 통신이 적합하지 않다.
'모두의 네트워크' 카테고리의 다른 글
8장 네트워크의 전체 흐름 살펴보기 (0) | 2024.05.03 |
---|---|
7장 응용 계층 : 애플리케이션에 데이터 전송하기 (0) | 2024.05.01 |
5장 네트워크 계층 : 목적지에 데이터 전달하기 (0) | 2024.04.25 |
4장 데이터 링크 계층: 랜에서 데이터 전송하기 (0) | 2024.04.22 |
3장 물리 계층: 데이터를 전기 신호로 변환하기 (0) | 2024.04.19 |