반응형
TCP ( Transmission Control Protocol)
전송을 제어하기 위한 프로토콜로 인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
특징
- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 흐름 제어
- 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지하는 혼잡 제어
- 높은 신뢰성 보장 (신뢰성이 높으므로 UDP보다 속도 느림)
- 전송이 양방향으로 동시에 일어날 수 있는 전이중(Full-Duplex), 각 연결이 정확히 2개의 종단점을 갖는 점대점(Point To Point) 방식 제공
- 데이터 전송 순서 보장 및 경계를 구분하지 않음
- 연결 지향 방식으로 패킷 교환 방식 사용
- 3-way handshaking 과정을 통해 연결을 설정
- 4-way handshaking 과정을 통해 연결을 해제
📲 연결 과정 (3-way handshaking)
#1 Client → Server (SYN 전달)
#2 Server → Client (SYN + ACK 전달)
#3 Client → Server (ACK 전달)
📴해제 과정 (4-way handshaking)
#1 Client → Server (FIN 전달)
#2 Server → Client (ACK 전달 및 대기)
#3 Server → Client (FIN 전달)
#4 Client → Server (ACK 전달)
📌 사용처
- 데이터의 손실이나 손상을 최소화하여 안정적인 데이터 전달을 보장해야하는 경우 사용
- 파일 전송, 이메일, 웹 페이지 로딩과 같은 신뢰성이 중요한 응용프로그램에 사용
UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜로 데이터를 데이터그램 단위로 처리하는 프로토콜
특징
- 비연결형 서비스로 데이터그램 방식 제공 (데이터 전송순서 바뀔 수 있음)
- 데이터 수신 여부 확인하지 않음
- 신뢰성을 보장하지 않음
- 데이터의 경계를 구분함
- 패킷 오버헤드가 적어 네트워크의 부하 감소
- 혼잡 제어를 하지 않기에 TCP보다 속도가 빠름
사용처
- 데이터의 순서를 보장하지 않고 독립적인 패킷으로 전송하므로 신속성을 요구하는 경우 사용
- 실시간 스트리밍, DNS(Domain Name System) 조회와 같은 신속한 데이터 전송이 필요한 응용프로그램에 사용
TCP | UDP | |
연결 방식 | 연결형 서비스(패킷 교환 방식) | 비연결형 서비스(데이터그램 방식) |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있음 |
수신 여부 확인 | 수신 여부 확인 | 수신 여부 확인하지 않음 |
통신 방식 | 1:1 통신 | 1:1, 1:n, n:n 통신 |
신뢰성 | 높음 | 낮음 |
속도 | 느림 | 빠름 |
반응형
소켓(Socket)
소켓의 기본 개념
- 엔드포인트(Endpoint): 소켓은 네트워크 상의 한 점을 의미하며, 이를 통해 데이터를 송수신 할 수 있게 함
- 데이터를 소켓을 통해 네트워크로 보내고 네트워크를 들어온 데이터를 소켓으로 받는 등 데이터 통로를 제공
- 소켓 주소: 소켓이 통신을 하기 위위한 특정 주소
- IP 주소: 네트워크 상에서 장치를 식별하는 유일한 주소
- 포트 번호: 네트워크 서비스나 애플리케이션을 식별하기 위한 번호로 하나의 장치에서 여러 애플리케이션이 동시에 동작할 수 있기 때문에 포트 번호가 필요
소켓의 유형
TCP 소켓
- 연결 지향적 : TCP 소켓은 두 엔드포인트 간에 안정적인 연결을 맺고, 이 연결을 통해 데이터를 송수신
- 신뢰성 보장: 데이터가 손실되거나 손상되지 않도록 보장
- 데이터가 전송된 순서대로 수신되도록 하며, 데이터 전송 속도 제어
UDP 소켓:
- 비연결 지향적 : UDP 소켓은 데이터를 전송하기 전에 연결을 설정하지 않음
- 데이터를 빠르게 전송할 수 있지만, 데이터의 손실, 중복, 순서 변경 등이 발생 가능
- 주로 실시간 애플리케이션에서 사용
소켓의 동작 원리
- 소켓 생성: 애플리케이션은 소켓 API를 호출하여 소켓을 생성하고, 해당 소켓에 사용할 프로토콜(TCP, UDP 등)을 지정.
- 주소 바인딩: 생성된 소켓을 특정 IP 주소와 포트 번호에 바인딩 진행. 서버의 경우, 이 단계에서 소켓을 네트워크 인터페이스에 연결
- 연결 수립: 클라이언트는 connect()를 호출하여 서버에 연결을 요청하고, 서버는 accept()를 호출하여 클라이언트의 연결을 수락
- 데이터 송수신: 연결 수립 후, 애플리케이션은 소켓을 통해 데이터를 데이터를 보내는 쪽에서는 send() 함수, 받는 쪽에서는 recv() 함수를 사용하여 주고 받음
- 연결 종료: 데이터 송수신이 완료되면 소켓을 닫아 연결을 종료
반응형
'컴퓨터 사이언스(CS) > 시스템' 카테고리의 다른 글
[CS] 파일 시스템과 HTTP (0) | 2024.08.05 |
---|
댓글