프로토콜 계층
🔍 인터넷 프로토콜 스택의 4계층
🔍 프로토콜 계층
IP (인터넷 프로토콜)
🔍 IP 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
🔍 IP 패킷 정보
- IP 패킷에는 규칙이 존재한다.
- IP 패킷 정보에 출발 IP, 목적지 IP, 기타 등등 그리고 전송 데이터가 포함되어 있다.
🔍 IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송하게 된다.
- 비신뢰성
- 중간에 패킷이 사라지거나 패킷을 여러 개 보냈을 때 순서대로 안 올 수 있다.
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개일 경우 구분할 수 없다.
💡 비연결성
💡 비신뢰성
- 여러 외부 요인에 의해서 중간에 패킷이 소실할 수 있다.
- 패킷의 전달 순서가 뒤바뀔 수 있다.
TCP (전송 제어 프로토콜 Transmission Control Protocol)
- TCP는 신뢰할 수 있는 프로토콜
- 대부분 TCP를 사용한다.
🔍 TCP 특징
- 연결지향 - TCP 3 way handshake (가상 연결)
- 패킷을 통해 데이터를 보내기 전에 상대방이랑 연결이 됐나 안됐나 확인한 후 연결을 통해 데이터를 보낸다.
- 데이터 전달 보증
- 데이터를 보낼 때 중간에 소실되거나 누락될 경우 그 정보를 데이터를 보내는 쪽에서 알 수 있다.
- 순서 보장
- 흐름 제어 (Flow Control)
- 혼잡 제어 (Congestion Control)
- 오류 감지 (Error Detection)
🔍 TCP/IP 패킷 정보
- IP 패킷 안에 TCP 패킷을 넣음으로써 IP 프로토콜의 한계를 극복했다.
🔍 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터를 보내기전에 서버와 클라이언트끼리 3번의 메시지를 주고 받으면서 서로 연결할 수 있는지 확인 한 후 연결할 수 있으면 서버와 연결을 하고 데이터를 보낸다.
- 요즘에는 최적화가 되어서 3번째 메시지인 클라이언트의 ACK 메시지를 보낼 때 데이터도 같이 전송한다.
🔍 데이터 전달 보증
- TCP를 통해서 데이터를 전송하면 데이터를 잘 받았다고 메시지를 받는다.
🔍 순서 보장
- 패킷의 순서가 다르게 올 경우, 순서가 다르게 온 순번부터 나머지 데이터를 전부 다 버리고 다시 올바르게 보내라고 메시지를 보낸다.
- 패킷 1, 패킷2, 패킷3 순서로 전송했지만 패킷1. 패킷3, 패킷2 순서로 도착했다.
- 이 때 서버에서 잘못온 순번인 패킷 3부터 시작해서 나머지 데이터를 다 버리고 패킷 2부터 다시 보내라고 메시지를 보낸다.
UDP 프로토콜
- UDP는 비연결형 서비스인 전송 프로토콜
- TCP보다 신뢰성이 떨어지지만 전송 속도가 빠른 프로토콜이다.
- 수신 여부, 도착 순서 등을 보장하지 않는다.
- 실시간성이 중요한 스프리밍에 자주 사용된다. (게임 포함)
- 사용 예시
- DNS (도메인 주소 서비스)
- IPTV
- VoIP
- TFTP (FTP보다 단순한 파일 전송 프로토콜)
- 온라인 게임
🔍 UDP 특징
- 하얀 도화지 처럼 기능이 거의 없다.
- 연결지향 - TCP 3way handshake 기능이 없다.
- 데이터 전달 보증 기능이 없다.
- 송신자가 수신자에게 정보가 정확히 전달 되었는지 알 방법이 없다.
- 순서 보장 기능이 없다.
- 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.
- 전송 도중 데이터가 손실되더라도 재전송을 하지 않는다.
💡 정리
- IP와 거의 같다.
- PORT와 체크섬 정도만 추가되었다.
- 애플리케이션에서 추가 작업이 필요하다.
TCP 와 UDP 의 공통점과 차이점
🔍 공통점
- 포트 번호를 이용하여 주소를 지정한다.
- 통신하기 위해 반드시 포트 번호를 결정해야 한다.
- 데이터 오류를 체크한다.
- IP의 오류 체크 기능은 프로토콜이 동작하기 위해 반드시 필요한 부분에만 적용된다. 즉, IP 헤더에 대한 오류만 체크하고 데이터에 대한 오류는 체크하지 않는다.
- 반면, TCP와 UDP는 헤더와 데이터 모두 오류를 체크한다.
🔍 차이점
💡 TCP
- 연결형 프로토콜이며, 연결이 성공해야 통신이 가능하다.
- 데이터 경계를 구분하지 않는다. 바이트 스트림(byte-stream) 서비스
- 신뢰성 있는 데이터를 전송한다.
- 데이터 순서를 위해 각 바이트마다 번호를 부여한다.
- 순서가 잘못 왔을 때 데이터를 재전송한다.
- 1:1 통신 (unicast)
- 전송 속도가 느리다.
- 패킷 관리가 필요없다.
💡 UDP
- 비연결형 프로토콜이며 연결 없이 통신이 가능하다.
- 데이터 경계를 구분한다. 데이터 그램(datagram) 서비스
- 비신뢰성 데이터를 전송한다.
- 데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
- 1 : 1 통신 (unicast), 1 : 다수 통신(broadcast), 다수 대 다수 통신(multicast) 지원
- 전송 속도가 빠르다.
- 패킷관리가 필요하다.
PORT
- 같은 IP 내에서 프로세스를 구분한다.
- 포트를 이용하여 한번에 서버를 여러개 연결할 수 있다.
- 0 ~ 65535 까지 할당 가능하다.
- 0 ~ 1023 까지는 잘 알려진 포트이므로 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
- 클라이언트의 8090, 21000, 10010은 포트 주소를 의미한다.
- 서버의 11220, 32202, 80은 포트 주소를 의미한다.
💡 정리
- IP란 목적지 서버를 찾는 것
- PORT란 서버 안에 있는 애플리케이션을 구분하는 것
- IP가 아파트라면 PORT는 동호수를 의미한다.
DNS (도메인 네임 시스템 Domain Name System)
- 전화번호부 같은 서버를 제공한다.
- 도메인 명을 IP 주소로 변환할 수 있다.
- DNS가 IP가 바뀔 수 있다는 것과 기억하기 어렵다는 단점을 해결했다.
🔍 DNS 사용
- IP가 변경되더라도 도메인 명으로 접속한다면 바뀐 새 IP 주소로 접속할 수 있다.
- IP를 외우지 않아도 된다.
💡 DNS에서 주로 UDP를 사용하는 이유
- TCP는 3 way handsshake 를 통해 connection을 유지하지만, UDP는 유지하지 않는다.
- DNS request는 UDP segment에 꼭 들어갈 정도로 작다.
- 즉, DNS를 TCP로 하기에는 커넥션도 유지해야하고 오히려 오버헤드가 더 커지기 때문에 DNS를 주로 사용한다.
- 하지만 크기가 UDP의 제한을 넘어가는 경우에는 TCP를 사용한다.
📌 인터넷 네트워크 정리
- 인터넷 망을 이용해서 메시지를 보내기 위해서는 IP(인터넷 프로토콜)가 있어야 한다.
- 그러나 IP 프로토콜는 한계가 명확하다.
- 순서 유지 안된다.
- 데이터 신뢰성이 없다.
- PORT가 없기에 같은 아이피 내에서 여러 애플리케이션을 구분할 수 없다,
- IP의 프로토콜의 한계점을 TCP 프로토콜이 해결해준다.
- UDP 프로토콜은 IP랑 비슷할 정도로 기능이 거의 없지만 PORT가 추가되어 있다.
- 필요시 개발자가 UDP 프로토콜에 기능을 추가적으로 확장 가능하다.
- PORT는 같은 IP안에서 동작하는 애플리케이션을 구분하기 위해서 사용한다.
- IP는 변하기 쉽고 외우기 어렵기 때문에 DNS라는 도메인 주소를 이용하여 서버를 원할하게 접속할 수 있게 한다.
👀 참고 자료
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
https://velog.io/@neity16/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%ACNetwork-%EC%A0%95%EB%A6%AC
[CS 정리] 네트워크(Network)
ref : https://hongchan.tistory.com/46브라우저를 통해 "www.naver.com" 값을 입력하면 어떤 일이 벌어질까?1) 브라우저는 입력된 url을 파싱해서, HTTP request 메시지를 만든다.2) 로컬 PC의 hosts파일과
velog.io
https://www.youtube.com/watch?v=ikDVGYp5dhg
TCP, UDP의 공통점 차이점, 특징
TCP와 UDP의 공통점 포트 번호를 이용하여 주소를 지정한다. 두 애플리케이션이 통신하기 위해 반드시 포트 번호를 결정해야 한다. 데이터 오류를 체크한다. IP가 제공하는 오류 체크 기능은 프로
shjz.tistory.com
'CS > HTTP' 카테고리의 다른 글
[HTTP] HTTP 헤더2 - 캐시와 조건부 요청 (0) | 2022.03.04 |
---|---|
[HTTP] HTTP 헤더1 - 일반 헤더 (0) | 2022.03.02 |
[HTTP] HTTP 상태코드 (0) | 2022.03.01 |
[HTTP] HTTP 메서드 (0) | 2022.02.28 |
[HTTP] HTTP 기본 (0) | 2022.02.10 |