티스토리 뷰
TCP(Transmission Control Protocol)
인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
TCP와 IP를 함께 사용한다.
- IP가 데이터의 배달을 처리
- TCP는 패킷을 추적 및 관리하게 된다.
TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다.
TCP 특징
- 연결형 서비스로 가상 회선 방식을 제공한다.
- 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다.
- 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
- 3-way handshaking을 쓰는 이유는 TCP는 연결형 서비스로 높은 신뢰성을 보장하기 때문이다.
- 흐름 제어 및 혼잡 제어
- 높은 신뢰성을 보장한다.
- UDP보다 비교적 속도가 느리다.
- 전이중(Full-Duplex), 점대점(Point to Point) 방식이다.
TCP 서버의 특징
- 서버소켓은 연결만을 담당한다.
- 연결 과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다.
- 서버와 클라이언트는 1대1로 연결된다.
- 스트림 전송으로 전송 데이터의 크기가 무제한이다.
- 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다.
- Streaming 서비스에 불리하다.(손실된 경우 재전송 요청을 하므로)
TCP는 패킷을 어떻게 추적 및 관리하나?
- 데이터는 패킷단위로 나누어 같은 목적지(IP계층)으로 전송된다.
- 예를 들어, 한줄로 서야하는 A,B,C라는 사람(패킷)들이 서울(발신지)에서 출발하여 부산(수신지)으로 간다고 하자.
- 그런데 A,B,C가 순차적으로 가는 상황에서 B가 길을 잘못 들어서 분실되었다.
- 하지만 목적지에서는 A,B,C가 모두 필요한지 모르고 A,C만 보고 다 왔다고 착각할 수 있다.
- 그렇기 때문에 A,B,C라는 패킷에 1,2,3이라는 번호를 부여하여 패킷의 분실 확인과 같은 처리를 하여 목적지에서 재조립을 한다.
---
UDP(User Datagram Protocol)
데이터를 데이터그램 단위로 처리하는 프로토콜
- 데이터그램이란, 독립적인 관계를 지니는 패킷이라는 뜻이다.
TCP와 달리 UDP는 비연결형 프로토콜이다.
- 즉, 연결을 위해 할당되는 논리적인 경로가 없다.
각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
UDP 특징
- 비연결형 서비스로 데이터그램 방식을 제공한다
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 신뢰성이 낮다.
- TCP보다 비교적 속도가 빠르다.
- 신뢰성보다는 연속성이 중요한 서비스 예를 들면 실시간 서비스(streaming)에 자주 사용된다.
UDP 서버의 특징
- UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.
- 소켓 대신 IP를 기반으로 데이터를 전송한다.
- 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.
- 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
- 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.
- 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.
'Computer Science > 네트워크' 카테고리의 다른 글
호스팅은 무엇인가? (0) | 2020.10.04 |
---|---|
도메인 네임이란? (0) | 2020.10.04 |
HTTP 프로토콜이란 ? (0) | 2020.10.04 |
DNS와 작동 원리 (0) | 2020.10.03 |
인터넷은 어떻게 작동하는가 (0) | 2020.10.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이펙티브 자바
- 디자인 패턴
- AWS
- Effective Java
- Kotlin
- Spring
- Spring Boot
- 코테
- 클린 코드
- 클린 아키텍처
- MSA
- 정규표현식
- 백준
- 디자인패턴
- JPA
- 이팩티브 자바
- 객체지향
- kotest
- Java
- C++
- 프로그래머스
- programmers
- Algorithm
- 테라폼
- BAEKJOON
- BOJ
- Olympiad
- 알고리즘
- node.js
- kkoon9
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함