osi 7계층 중 전송계층의 대표적인 프로토콜로 TCP,UDP가 있다.
전송계층에서는 송수신 프로세스 간의 연결을 하며
데이터 분할, 재조립, 흐름제어, 오류제어, 혼잡 제어등을 한다.
TCP(Transmission Control Protocol)
인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로 사용된다
일반적으로 TCP와 IP는 함께 사용되며, IP는 배달을, TCP는 패킷의 추적 및 관리를 한다.
TCP는 전송계층에 위치하며 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옷텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 해준다.
TCP는 연결형 서비스로, 신뢰적인 전송을 보장하기에 handshaking하고 데이터의 흐름제어와 혼잡제어를 수행한다. 하지만 이러한 기능으로 인해 TCP의 속도가 느리다.
TCP 특징
- 높은 신뢰성(TCP 하위계층인 IP 계층의 신뢰성 없는 서비스를 보완, 패킷 손실/중복/순서바뀜 없도록 보장)
- 흐름/혼잡 제어( 흐름제어 기능을 활용하여 송/수신 속도를 일치시킴, 네트워크가 혼잡할 때 송신율 감속)
- 전이중(Full-Duplex), 점대점(Point to Point) 방식
- UDP보다 속도 느림
- 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제
UDP(User Datagram Protocol)
비연결성이고, 신뢰성이 없으며, 순서화되지 않은 데이터그램 서비스를 제공하는 프로토콜
데이터를 데이터그램 단위로 처리(할당되는 논리적인 경로가 없고 각각의 패킷이 다른 경로로 전송되고 독립적인 관계를 지니는 패킷)
데이터를 서로 다른 경로로 독립 처리하는 프로토콜
UDP는 연결을 설정하고 해제하는 과정이 존재하지 않는다.
서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 재조립하거나 흐름제어 및 혼잡제어를 수행하지 않아 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만 데이터 전송의 신뢰성이 낮다.
연속성이 중요한 실시간 서비스(스트리밍)에 좋다.
UDP 특징
- 비연결형 서비스로 데이터그램 방식을 제공한다
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.(메시지 도착 확인 안함(확인응답 없음)
- UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.(오류제어 거의 없음)
- 신뢰성이 낮다( 데이터크램 지향의 전송계층용(논리적인 가상회선 연결 필요 없음))
- TCP보다 속도가 빠르다(빠른 요청과 응답이 필요한 실시간 응용에 적합)
TCP vs UDP
- UDP와 TCP는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방하다. 즉, 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 포트로 간주한다.
- 또한 같은 모듈(UDP or TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우에는 서로 다른 포트 번호를 동적으로 할당한다. (동적할당에 사용되는 포트번호는 49,152~65,535이다.)
TCP의 3-Way Handshake
- TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정
- 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다.
- 즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
TCP에서 연결지향적인 특성을 갖게 해주는 과정이 3 Way-Handshake이다
네트워크 상에서 서로 패킷을 주고 받으면서 연결이 잘 되었는지 확인하는 것이다.
A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태 가 되는 것이다.
이때 서버는 Listen 상태로 포트 서비스가 가능한 상태여야 한다. (Closed :닫힌상태) B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.
'STUDY > CS' 카테고리의 다른 글
DFS / BFS (0) | 2023.01.06 |
---|---|
복습(환경변수 설정, 이메일 인증) (0) | 2023.01.05 |
동기 / 비동기 (0) | 2023.01.05 |
프로세스/스레드 (0) | 2023.01.05 |
Base64 인코딩 (0) | 2023.01.05 |
댓글