오봉이와 함께하는 개발 블로그
HTTP - TCP&UDP, PORT, DNS 본문
TCP & UDP
인터넷 프로토콜 스택의 4계층이 있다.
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
프로토콜 계층
해당 사진에서 Ethernet Frame에는 MAC Address 등 물리적인 정보가 들어있다.
TCP/IP 패킷 정보
TCP 특징(Transmission Control Protocol 전송 제어 프로토콜)
- 연결 지향적이다.
- 연결이 되었는지, 안 되었는지를 확인한다.
- TCP 3 way handshake(가상 연결)
- 데이터 전달 보증
- 패킷이 누락되면 알 수 있다.
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP를 사용한다.
TCP 3 way handshake
해당 과정들을 통해 클라이언트도, 서버도 서로를 믿을 수 있게 된다.
서로 연결이 되었다는 것을 확인하고 데이터를 전송한다.
하지만, 실제적으로 연결된 것이 아니고 개념적으로 연결된 것이다.
나를 위한 전용 랜선이 연결된 것이 아니라, 클라이언트와 서버가 서로 통신할 수 있는 상태라는 것을 의미한다.
데이터 전달 보증
TCP에서는 데이터를 전송하면 데이터를 잘 전송 받았다고 응답을 보내준다.
데이터를 잘 전송 받았다고 응답이 오지 않는다면 문제가 생긴 것.
순서 보장
서버에서 패킷 순서를 알고 있어서 순서대로 온 패킷을 제외한 다른 패킷들을 모두 버리고 다시 보내라 요청한다.
물론 최적화를 통해서 처리하는 방법도 있지만, 위 방법이 기본적인 방법이다.
어떻게?
위 모든 기능들은 TCP/IP 패킷 정보를 통해 얻은 정보를 바탕으로 동작하는 기능들이다.
UDP 특징(User Datagram Protocol 사용자 데이터그램 프로토콜)
- 기능이 거의 없다.
- 연결 지향적이지 않다.
- 데이터 전달을 보증하지 않는다.
- 순서를 보장하지 않는다.
- 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다
- 정리
- IP와 거의 같지만, PORT와 체크섬 정도만 추가 되었다.
- 하나의 네트워크에서 여러 애플리케이션이 사용하는 패킷이 있을텐데, 어떤 애플리케이션에서 어떤 패킷을 사용하는지 알 수 있게 하는 것이 PORT이다.
- 애플리케이션에서 추가 작업이 필요하다.
- IP와 거의 같지만, PORT와 체크섬 정도만 추가 되었다.
PORT
한번에 둘 이상의 서버와 연결해서 통신해야 할 때가 있을 것이다.
위 경우 수 많은 패킷들이 전송될텐데 어떤 패킷이 내가 사용하는 애플리케이션의 패킷인지 알 수 없다.
이를 위해 PORT가 존재한다.
- 0 ~ 65535 : 할당 가능한 포트 번호
- 0 ~ 1023 : 잘 알려진 포트로 사용하지 않는 것이 좋다.
- FTP : 20, 21
- TELENET : 23
- HTTP : 80
- HTTPS : 443
IP는 아파트 주소라고 치면 PORT는 동호수를 알려주는 것이라고 생각하면 간편하다.
TCP/IP 패킷 정보
패킷 정보
PORT - 같은 IP 내에서 프로세스 구분
DNS (Domain Name System 도메인 네임 시스템)
IP는 기억하기 어렵고, 치명적으로 IP는 변경될 수 있다는 단점이 있다.
이를 위해 DNS(Domain Name System 도메인 네임 시스템)이 존재한다.
DNS는 도메인 명을 통해서 IP 주소로 변환시켜준다.
DNS 사용
인프런 김영한 지식 공유자님의 강의 - 모든 개발자를 위한 HTTP 웹 기본 지식
'이론' 카테고리의 다른 글
HTTP - 비 연결성, HTTP 메시지 (0) | 2022.08.02 |
---|---|
HTTP - HTTP 범위, 클라이언트-서버 구조, Stateful&Stateless (0) | 2022.08.01 |
HTTP - URI, 웹 브라우저 요청 흐름 (0) | 2022.07.31 |
HTTP - 인터넷 통신, IP(인터넷 프로토콜) (0) | 2022.07.29 |
이론 - 좋은 객체지향 설계 5가지 원칙(SOLID) (0) | 2022.05.27 |