지난 시간 네트워크 규격 가장 기초인 ISO 7 계층에 대해 포스팅 하였다.
이번 포스트에서 TCP/IP와 UDP에 대해 자세히 알아보고자 한다.
TCP/IP란?
TCP(Transmisiion Control Protocol) : 전송 제어 프로토콜로써, 전송 계층(4 layer)를 따른다.
가상 회선 방식 제(클라이언트와 서버를 연결하여 패킷을 전송하기위한 논리적 경로 배정)
수신 패킷에 대한 승인을 제공하고, 보낸 순서대로 패킷을 수신할수 있도록 한다.
만약 에러가 발생하였거나 패킷이 손실되었다면 패킷 재전송을 요청하기에 신뢰성이 보장된 프로토콜이다.
IP(Internet Protocol) : 인터넷 통신 프로토콜로써, 네트워크 계층(3 layer)를 따른다.
호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.
IP 주소 체계를 따르고, IP Routing을 통해 경로를 찾고 목적지에 도착하는 프로토콜
IP의 특징은 비신뢰성과 비연결성
TCP의 특징은 연결 지향성과 신뢰성 데이터 전송 보장
전송과 수신을 동시에 수행하는 전이중 방식, 호스트와 스스트 간 점대점(Point to Point) 연결을 제공
TCP/IP(TCP + IP)를 사용한다는 뜻은 송신 호스트가 수신 호스트에게 IP 주소(IPv4, IPv6)를 사용하여 데이터를 전송하고 , TCP 프로토콜에서 수신 받은 데이터 신뢰성 있는 연결 담당하여 데이터 손실 시 재송신을 요청하는 신뢰성을 보장하는 프로토콜이다.
TCP/IP 4 layer 와 OSI 7 layer는 위와 같이 대응된다.
OSI 모델은 장비 개발과 통신 자체를 표준 개념으로 사용, 실제 통신 기기에서는 TCP/IP 프로토콜을 사용한다.
OSI 7 layer | TCP/IP 계층 | 역할 | |
Application Layer(전송 계층) | Application Layer | 사용자가 응용프로그램과 소통할 수 있게 UI 제공. TCP/IP 기반의 응용 프로그램을 구분할 때 사용 |
|
Presentation Layer(표현 계층) | |||
Session Layer(세션 계층) | |||
Transport Layer(전송 계층) | Transport Layer | 데이터의 송수신을 담당하고 통신 노드 간의 연결을 제어 네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 전송 |
|
Network Layer(네트워크 계층) | Network Layer | 논리적 주소인 IP를 이용한 노드간 데이터 전송과 라우팅 담당 |
|
Data Link Layer(데이터 링크 계층) | Network Access Layer | 운영체제의 하드웨어적인 요소와 관련되는 모든 것을 지원 물리적으로 데이터가 네트워크를 통해 전송되는 형식 정의 에러 검출 기능과 패킷의 프레임화. |
|
Physical Layer(물리 계층) |
TCP는 데이터 스트림으로부터 데이터를 얻은 후 일정 단위로 분할한 뒤 TCP 헤더를 덧붙여 TCP 세그먼트를 생성
TCP 프로토콜의 작동은 크게 세 가지 흐름으로 구분한다.
- 연결 생성 (Connection establishment)
- 자료 전송 (Data transfer)
- 연결 종료 (Connection termination)
신뢰성 있는 연결이 생성되어야 하며, 그 후 자료를 전송하고, 마지막으로 연결을 종료하면서 할당된 자원을 반납한다.
연결 생성
연결을 생성하기 위해, 3방향 핸드셰이크를 사용한다.
SYN: 클라이언트가 서버에게 SYN 메시지를 보낸다. 이 메시지에 포함된 시퀀스 번호는 클라이언트가 임의 설정 값 A
이 때 포트는 열려있는 상태이다.
SYN-ACK: 서버가 클라이언트에게 SYN-ACK 메시지로 응답한다. 이 메시지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A + 1).
ACK: 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 (B + 1)
이 밖에 주로 사용하는 Flag는 RST, FIN, FIN/ACK, PUSH 등이 있다.
연결 종료
연결을 종료하기 위해, 4방향 핸드셰이크를 사용한다.
흐름 제어(Flow control)
데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
수신자도 Window Size를 통해 수신량을 정할 수 있다.
혼잡 제어(Congestion control)
네트워크 내의 패킷 수가 넘치지 않도록 방지
데이터의 소통량이 과하면 패킷을 조금만 전송해서 붕괴현상을 막는다.
신뢰성 높은 전송
Dupack-based retransmission: ACK 값이 중복으로 올 경우 패킷 이상을 감지하고 재전송 요청
Timeout-based retransmission: 일정시간동안 ACK 값이 수신을 못할 경우 재전송 요청
웹 페이지 로딩, 이메일 전송, 파일 전송 등 정확한 데이터 전송이 중요한 경우에 사용
왜냐하면 TCP는 데이터 패킷이 손실될 경우 재전송을 요청하고, 보내진 순서대로 데이터가 도착하도록 보장하기 때문입니다. 따라서, 데이터의 정확성을 요구하는 애플리케이션에서 주로 사용됩니다.
UDP란?
비연결형 서비스로 데이터그램 방식(데이터그램이란, 독립적인 관계를 지니는 패킷 )
연결형이 아니라서 데이터를 송수신 시 신호절차가 필요없고 데이터의 경계가 없다(서버 소켓과 클라이언트 소켓 구분x)
또한 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다.
특징
1. 데이터 신뢰성이 낮다(데이터 전송 순서 보장x)
2. 3-way handshaking과정을 거치지 않기 때문에 TCP보다 속도가 빠르다.
3. 패킷 오버헤드가 적어 네트워크 부하가 감소된다.
4. UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
UDP는 실시간 통신이나 스트리밍 서비스에 주로 사용됩니다. 데이터의 빠른 전송이 중요하고,
일부 데이터의 손실이 허용되는 환경에 적합
왜냐하면 UDP는 연결 성립에 걸리는 시간이 없고, 전송하는 데이터의 크기가 작아 네트워크 지연이 적기 때문입니다.
실시간 비디오 스트리밍이나 온라인 게임에서 빠른 데이터 전송이 중요.
마지막으로 아래 표와 사진으로 정리하고자 한다.
TCP | UDP | |
연결 방식 | 연결형 | 비연결형 |
패킷 교환 방식 | 가상 회선 | 데이터그램 |
데이터 경계 | 데이터 경계X | 데이터 경계O |
전송 순서 | 전송 순서 보장 | 전송 순서 보장되지 않는다 |
수신 여부 확인 | 수신 여부 확인O | 수신 여부 확인X |
통신 방식 | 일대일 통신 | 일대일,일대다,다대다통신 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다. |
사용 예시 | HTTP통신, Email, 파일전송, 메일전송, 터미널접속(Telnet/SSH) |
DNS, Broadcasting( 실시간 동영상 서비스),온라인 게임, 음성 통화 |
'일반 네트워크' 카테고리의 다른 글
Ethernet(이더넷) 구성 하드웨어 장치 [2] (0) | 2024.07.10 |
---|---|
LAN과 Ethernet(이더넷) [1] (0) | 2024.07.08 |
트래픽 전송 방식(캐스트 모드) (0) | 2024.07.08 |
PORT / IP 주소 / MAC 주소 / 서브넷 마스크 / 소켓 (0) | 2024.07.08 |
OSI 7 layer (0) | 2024.06.13 |