부트캠프
OSI 3계층 , 전송 계층
한우종
2024. 9. 11. 22:40
전송 계층 이란?
전송 계층은 OSI 모델의 네 번째 계층으로 네트워크 상에서 데이터의 전송을 관리하는 역할을 담당한다.
주요 기능으로는 데이터의 분할 , 전송 ,오류 검출 및 수정 , 흐름 제어 등이 있다.
- 전송 계층의 두 가지 주요 프로토콜
① . TCP (Transmission Control Protocol)
TCP는 전송 계층의 주요 프로토콜 중 하나로 신뢰성 있는 데이터 전송을 보장하는 연결 지향적 프로토콜 이다.
TCP는 데이터 전송 전에 클라이언트와 서버 간에 연결을 설정하는 과정이 필요하다.
이 과정은 3-way handshake를 통해 이루어진다.
TCP는 데이터가 전송되는 동안 오류를 검출하고 손실된 패킷을 재전송하는 매커니즘을 갖추고있다.
각 TCP 세그먼트에는 체크섬이 포함되어 있어 오류를 검출한다.
TCP는 전송된 데이터가 수신자에게 올바른 순서로 도착하도록 보장한다. 만약 데이터가 순서대로 도착하지 않는다면 TCP는 이를 재정렬한다.
★ 연결 지향적이란?
두 장치 간에 안정적이고 지속적인 연결을 설정하고 이를 기반으로 데이터를 전송하는 방식을 의미한다.
★ 3-way handshake 란?
TCP프로토콜에서 클라이언트와 서버간에 연결을 설정하는 과정이다. 이 과정은 데이터 전송을 시작하기 전에 신뢰성 있는 연결을 보장하기 위해 필요하다.
3-way handshake의 과정
1.SYN(Synchronize)
클라이언트가 서버에 연결 요청을 보낸다. 이 요청에는 클라이언트의 초기 순서 번호가 포함된 SYN패킷이 포함된
2.SYN-ACK(Synchronize-Acknowledge)
서버는 클라이언트의 SYN패킷을 수신하고 이를 확인하기 위해 SYN-ACK패킷을 보낸다. 이 패킷에는 서버의 초기 순서 번호와 클라이언트의 SYN요청에대한 확인 응답(ACK)이 포함되어 있다.
3.ACK(Acknowledge)
클라이언트는 서버의SYN-ACK패킷을 수신하고 이를 확인하기 위해 ACK패킷을 보낸다.
이 단계에서 클라이언트와 서버간의 연결이 성립된다.
이 3가지 과정을 통해 클라이언트와 서버는 서로의 존재를 확인하고 초기 순서 번호를 교환하여 데이터 전송을 위한 안정적인 연결을 설정한다.3-way handshake는 TCP의 신뢰성과 데이터 무결성을 보장하는 중요한 과정이다.
★ 체크섬 이란?
체크섬(checksum)은 데이터 전송 중 오류를 검출하기 위해 사용되는 간단한 오류 검출 메커니즘이다.
주로 데이터의 무결성을 확인하는데 사용되며 다음과 같은 방식으로 작동한다.
작동원리
1.데이터 블록 생성 : 전송할 데이터가 여러개의 비트나 바이트로 구성된 블록으로 나뉜다.
2.합산 계산 : 데이터 블록의 모든 비트나 바이트의 값을 정해진 방식으로 합산한다. 보통2의 보수방식이나 모듈로 연산한다.
3.체크섬 생성 : 합산한 결과를 일정한 길이의 체크섬으로 변환하여 데이터와 함께 전송한다. 이 체크섬은 원래 데이터와 함께 패킷의 헤더에 포함된다.
② . UDP(User Datagram Protocol) 사용자 데이터그램 프로토콜
UDP는 전송 계층의 주요 프로토콜중 하나로 TCP와 함께 인터넷 프로토콜 스위트의 중요한 구성요소이다.
UDP는 데이터 전송의 효율성을 중시한다.
UDP는 연결을 설정하지 않고 데이터를 전송한다 즉 송신자와 수신자 간의 연결을 수립하는 과정이없으며
데이터그램 단위로 전송된다.
UDP는 데이터 전송 중 오류 검출이나 데이터 재전송을 보장하지않는다 따라서 데이터가 손실되거나 순서가 뒤바뀔수 있으며 이러한 상황을 처리할 방법이없다. TCP와는 다르게 신뢰성이 부족하다.
하지만 연결 설정이나 오류 검출 과정이 없기 때문에 UDP는TCP보다 더 빠르게 데이터 전송이 가능하다.
이러한 점은 실시간 애플리케이션 등 에서 유리하다.
UDP의 헤더는 간단하여 필요한 필드만 포함되어있어 오버헤드를 줄이고 효율성을 높인다.
포트 란?
포트는 네트워크 통신에서 특정 프로세스나 서비스와 연결하기 위한 논리적 주소이다. 포트번호는 0부터 65535까지있으며 일반적으로 다음과 같이 분류된다.
포트 분류
1.잘 알려진 포트 (0-1023): HTTP(80),HTTPS(443),FTP(21)등과 같은 기본 서비스에 사용된다.
2.등록된 포트 (1024-49151) :특정 서비스나 애플리케이션에 대해 등록된 포트이다.
3.동적/사설 포트(49152-65535): 임시로 클라이언트가 사용하는 포트이다.
이러한 포트를 통해 여러 애플리케이션이 동일한 네트워크 연결을 공유할 수 있다.