인터넷 네트워크 : TCP/UDP

Ji Yeon Park·2020년 12월 26일
0

HTTP 웹 기본지식

목록 보기
3/9
post-thumbnail

🔶 인터넷 네트워크 학습하기

✔️ 웹이나 HTTP는 인터넷 네트워크 망을 기반으로 동작한다. 인터넷 네트워크에 대해 먼저 알아보자.

*️⃣ 인터넷 네트워크의 5가지 카테고리

▶️ 인터넷 통신
▶️ IP (Internet Protocol)
▶️ TCP, UDP
▶️ PORT
▶️ DNS


✅ 인터넷 프로토콜의 4계층

*️⃣ TCP/IP 4계층

인터넷 프로토콜 스택의 4계층설명
어플리케이션 계층 - HTTP , FTP사용자 응용 프로그램으로 부터 요청을 받아 이를 적절한 메시지로 변환하고 하위 계층으로 전달한다
전송계층 - TCP, UDPIP에 의해 전달되는 패킷의 오류를 검사하고 통신 노드간의 제어 및 자료의 송수신을 담당한다
인터넷 계층 - IP통신 노드 간의 IP패킷을 전송하는 기능 및 라우팅 기능을 담당한다
네트워크 인터페이스 또는 데이터 링크 계층 - LAN, 패킷 망이더넷 카드 등으로 연결된 물리적인 네트워크들을 의미한다

*️⃣ 프로토콜 계층


✅ TCP란 무엇인가

*️⃣ TCP란?

✔️ Transmission Control Protocol전송 제어 프로토콜을 뜻한다.
✔️ TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 도와준다.
✔️ TCP는 프로토콜 계층 중 전송계층에 위치한다.


✅ TCP/IP 패킷 정보

✔️ IP 패킷만으로 해결이 안되던 순서, 전송제어, 검증정보에 대한 것들이 해결 가능해진다.


✅ TCP의 특징

✔️ 전송 제어 프로토콜이다.

*️⃣ TCP의 특징 대표적인 3가지

1️⃣ 연결지향적이다.

▶️ 클라이언트와 서버간의 연결을 하고 데이터를 전송하기 때문에 IP 비신뢰성의 한계를 뛰어넘는다.
▶️ TCP 3 way handshake (가상연결 프로세스)

2️⃣ 데이터 전달 보증
▶️ 중간에 패킷이 누락되면 누락됐는지 확인할 수 있다.
3️⃣ 순서 보장

✔️ 이러한 특징들은 TCP 패킷에 의해 가능해진다.
✔️ TCP는 이러한 특징들을 통해 신뢰할 수 있는 프로토콜이 됐고 현재 대부분 TCP를 사용하고 있다.


✅ UDP란 무엇인가

*️⃣ UDP란?

✔️ User Datagram Protocol로 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)이다.

✔️ UDP는 전송 계층(Transport Layer)에서 사용하는 프로토콜로 동일 계층에서 사용하는 또 다른 프로토콜로 TCP가 존재한다.


✅ UDP의 특징

*️⃣ UDP의 대표적인 특징

▶️ 하얀 도화지에 비유 (기능이 거의 없음)
▶️ 연결지향 X
▶️ 데이터 전달보증 X
▶️ 순서보장 X

✔️ 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠른 작용을 한다.
✔️ 어플리케이션에 추가 작업이 필요하다.
✔️ IP와 거의 비슷하다. IP기능 + PORT, 체크섬 등만 추가되어있다.

*️⃣ PORT란?

하나의 IP에서 다중으로 실행되고 있는 어플리케이션의 구분을 도와주는 것.

👉 PORT 더 알아보기


✅ UDP는 왜 사용할까?

▶️ 프로그램들은 네트워크로 통신할 때 신뢰성이 높은 TCP를 사용한다. TCP는 데이터 신뢰성을 보장하기 위한 방식이기 때문에 누락된 데이터를 모두 받기 위한 메커니즘이 정의되어 있다.

▶️ 이러한 매커니즘은 이메일이나 파일전송과 같은 분야등에서 필수불가결의 요소였으나 실시간 스트리밍 서비스에서는 걸림돌로 작용한다. 간단히 전체 영상에서 점 하나 못 받은 것 때문에 버퍼링 돌린다고 재생이 중지되기 일쑤였고, TCP는 혼잡제어를 위해 보내는 양까지 조절하기 때문에 영상 데이터의 퀄리티가 안정적이지 못했다. 결국 이를 해결하기 위하여 제시된 것이 UDP이다.

▶️ 매커니즘이 정해져있어서 손을 댈 수 없는 TCP 기반을 더 최적화 하고 싶을 때, TCP는 그대로 두고 UDP를 이용해서 어플리케이션 레벨에서 만들어내면 된다.


✅ Reference

출처:
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

profile
Frontend Developer

0개의 댓글