네트워크

OSI 7계층 중 전송 계층 (24.09.12 강의 관련)

skyteer0 2024. 9. 11. 10:47

전송 계층의 역할

1. 데이터가 제대로 도착했는지 확인한다.

2. 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별

 

네트워크 계층에서 다른 네트워크로 데이터를 전송할 때 라우터가 필요하고 라우팅 기능을 사용할 수 있지만

 

라우팅 정보가 잘못될 수도 있고

많은 라우터를 경유하는 도중에 라우팅에 문제가 생길 수도 있고

패킷이 손상되거나 유실될 수도 있다.

 

OSI모델의 전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.

전송 계층에는 오류를 점검하는 기능이 있어서 오류가 발생하면 데이터를 재전송하도록 요청한다.

 

네트워크 계층에서 데이터를 전달하면 전송 계층은 데이터가 제대로 도착했는지 확인한다.

 

전송 계층의 특징

신뢰성/정확성 : 데이터를 목적지에 문제없이 전달하는 것

효율성 : 데이터를 빠르고 효율적으로 전달하는 것

 

신뢰할 수 있는 데이터를 전달하는 통신을 연결형 통신

연결형 통신

신뢰와 정확성이 우선인 통신이라 여러 번 확인하고 보내는 상대편과 확인해가며 통신하는 방식

 

효율적으로 데이터를 전달하는 통신을 비연결형 통신

비연결형 통신

효율이 우선이라 확인 절차 없이 일방적으로 보내는 상대편을 확인하지 않고 일방적으로 데이터를 전송하는 방식

 

연결형 통신 프로토콜에는 TCP를 사용 비연결형 통신에는 UDP가 사용된다.

 

TCP(전송 제어 프로토콜)

TCP는 전송 계층에서 신뢰할 수 있는 정확한 통신을 제공하는 신뢰성과 정확성이 우선인 연결형 통신 프로토콜이다.

이미지 출처 : [Network] TCP/IP 각 계층과 통신의 흐름 파악하기 (tistory.com)

 

세그먼트 : TCP 헤더가 붙은 데이터

TCP 헤더 : TCP로 전송할 때 붙히는 헤더 목적지까지 데이터를 제대로 전송하기 위해 필요한 정보가 있다.

 

데이터를 전송하기 전에 연결(connection)이라는 가상의 독점 통신로 확보 작업을 해야하는데 이 연결을 확립한 후  데이터를 전송할 수 있다.

 

연결 : TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로 연결을 확립하고 데이터를 전송한다.

 

TCP 헤더에는 코드 비트라는 부분이 있는데 코드 비트는 TCP 헤더의 연결 제어 정보가 기록되는 곳이다.

초기값은 0이고 연결을 확립하려면 SYN(연결 요청)과 ACK(확인 응답)가 필요하다.

 

3-way 핸드셰이크

연결은 SYN과 ACK를 사용하여 확립 할 수 있고 신뢰할 수 있는 연결을 하려면 데이터를 전송하기 전에 패킷 교환을 세 번(three-way handshake) 확인 한다.

 

3-way 핸드셰이크 : 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 세번 교환하는 것을 의미

                                핸드셰이크는 데이터 통신에서 확실하게 데이터가 전송되었는지 확인하면서 이루어 지                                    는 통신 수단이다.

 

1. 통신을 하려면 서버에게 허가를 받아야 하기에 클라이언트에서 서버로 연결 확립 허가를 받기 위한 요청(SYN)을 보낸다.

2. 서버는 클라이언트가 보낸 요청을 받은 후에 허가한다는 응답을 회신하기 위해 연결 확립 응답(ACK)을 보낸다. 동시에 서버도 클라이언트에게 데이터 전송 허가를 받기 위해 연결 확립 요청(SYN)을 보낸다.

3. 서버의 요청을 받은 클라이언트는 서버로 허가한다는 응답으로 연결 확립 응답(ACK)를 보낸다.

 

데이터를 전송할 때만이 아니라 전송한 후에도 연결을 끓기 위한 요청을 교환해야 한다.

연결을 끊을 때는 FIN(연결 종료)과 ACK(확인 응답)를 사용한다.

 

1. 1에서 2로 FIN을 보낸다.

2. 2에서 1로 ACK를 반환한다.

3. 2에서도 1로 FIN을 보낸다.

4. 1에서 2로 ACK를 반환한다.

 

포트 번호

포트 번호 : 어떤 애플리케이션인지 구분하는역할

 

전송 계층의 역할 중 전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하는 역할을 하기 위해선

TCP 헤더의 출발지 포트 주소(sorce port number)와 목적지 포트 주소(destination port number)가 필요하다. TCP 헤더에 포트 번호가 있기 때문에 애플리 케이션을 구분할 수 있게 된다.

 

포트 번호는 0 ~ 65535번 까지 사용할 수 있고 크게 세 종류로 구분된다.

 

잘 알려진 포트(well-known port) / 0번 ~ 1023번 / 주요 프로토콜이 사용하도록 예약되어 있다. 일반적으로                                                                                     서버 측 애플리케이션에서 사용된다.

등록된 포트(registered port) / 1024번 ~~ 49151번 / 1024번 : 예약되어 있지만 사용되지는 않는 포트

                                                                                    1025번 이상 : 랜덤 포트라고 하고 클라이어느 측의 송                                                                                        신 포트로 사용

동적 포트 (dynamic port) / 49152번 ~ 65535번

애플리케이션 포트 번호
SSH 22
SMTP 25
DNS 53
HTTP 80
POP3 110
HTTPS 443

이처럼 동작하는 애플리케이션은 각각 포트 번호가 있어 다른 애플리케이션과 서로 구분된다.

데이터를 전송할 때는 상대방의 IP 주소가 필요하지만

어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트 번호가 필요하다.

 

UDP(User Datagram Protocol)

UDP : 사용자 다이어그램 프로토콜 전송 계층에서 데이터를 효율적이고 빠르게 보낼 때 사용되는 프로토콜

 

UDP는 비연결형 통신이라서 데이터를 전송할 때 TCP처럼 시간이 걸리는 확인 작업을 일일이 하지 않는다.

UCP는 TCP와 달리 효율성을 중요하게 여기는 프로토콜이라 TCP와 같은신뢰성과 정확성을 요구하게 되면 효율이 떨어진다.

 

UDP의 장점은 데이터를 효율적으로 빠르게 보내는 것이라서 스트리밍 방식으로 전송하는 동영상 서비스와 같은 곳에 사용된다.

동영상을 TCP 데이터 통신으로 전송하면 수신을 확인하는데 시간이 너무 오래 걸려서 동영상을 원할하게 볼 수 없다. 그래서 동영상 같은 건 빠른 UDP를 사용한다.

 

UCP 헤더 : UDP 에서는 UDP 헤더가 붙은 데이터를 UDP 데이터 그램이라고 한다.

헤더에는 올바른 목적지의 애플리케이션으로 데이터를 전송하기 위해 필요한 정보가 기록되어 있다.

 

TCP와 UDP의 차이점

TCP는 번거롭게 여러 번 확인 응답을 보내면서 전송

UDP는 효율성과 빠른 속도가 중요해서 상대방을 확인하지 않고 연속해서 데이터를 보낸다. 또한 UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 보낼 수 있다. 이것을 브로드캐스트라고 한다.

 

 

출처:

🌏 네트워크 구조 이해:: 전송 계층_ 신뢰할 수 있는 데이터 전송하기 (velog.io)