로드맵의 세 번째 강의는 인프런 - 모든 개발자를 위한 HTTP 웹 기본 지식이다.
모든 HTTP 기반 개발 실무에 쓰이는 핵심 내용을 제대로 다질 수 있는 강의이다.
오늘은 첫 번째 섹션인 인터넷 네트워크
에 대해 배워볼 것이다.
💡 인터넷(Internet)이란?
인터넷이라는 용어는 여러 통신망을 하나로 연결한다는 의미의
인터 네트워크(inter-network)
에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로 연결하는 거대한 컴퓨터 통신망을 의미한다.
복잡한 인터넷망에서 통신하기 위해서는 최소한의 규칙이 있어야 한다. 이를 인터넷 프로토콜, IP라고 한다.
💡 IP (Internet Protocol)
인터넷 환경에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음
지정한
IP Address
에패킷(Packet)
이라는 통신 단위로 데이터를 전달한다.
패킷을 전달할 때, 패킷의 출발지 IP, 목적지 IP를 확인하면서 전달하며 최종 목적지까지 전달한다.
: 패킷을 받을 대상이 없거나 서비스 불능 상태인 경우에도 패킷을 전송한다.
: 패킷이 중간에 사라지거나(패킷 소실),
하나의 정보를 담고 있는 패킷이 너무 커서 나눠서 보내질 때 뒤죽박죽으로 오는 경우가 있다.
: IP 프로토콜만으로는 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분이 어렵다.
위에서 본 IP 프로토콜의 한계를 해결할 수 있는 것이 바로 TCP이다.
신뢰할 수 있는 프로토콜
포트 정보를 담고 있어서 IP의 한계를 해결할 수 있게 되었다!
1. 연결 지향 -
TCP 3 way handshake
(가상 연결)
2. 데이터 전달 보증
3. 순서 보장
ACK
을 통해 데이터를 잘 받았는지 알 수 있다.
패킷이 순서대로 오지 않았으면, 데이터 재전송을 요청한다.
- IP 프로토콜과 거의 비슷하지만 포트 번호, 체크섬 등이 추가되었다.
- 애플리케이션에서 추가 작업이 필요하다.
- 비연결형 (
3 way handshake
❌)- 데이터 전달을 보증하지 않는다.
- 순서를 보장하지 않는다.
오잉 저것만 보면 좋은 점이 없는 것 같은데, UDP를 왜 쓰는걸까?
💡
TCP
는 높은 오버헤드를 가질 수 있기 때문이다!
전송 데이터도 커지고, 신뢰성 있는 데이터 전송을 위해서 재전송 등, 추가적인 작업이 필요하다.
반면에 UDP
는 신뢰성을 보장하지는 않지만, TCP
에 비해 단순하고 매우 빠르다!
그래서 성능과 연속성이 중요하며, 데이터 손실은 상대적으로 중요하지 않은 동영상 스트리밍 등에 사용된다.
같은
IP
내에서 프로세스를 구분하기 위해서 사용한다.
위에서 패킷이 도착지 IP 주소를 통해 최종 목적지까지 도착한다고 했다.
이때 해당 IP에 도착했을 때, 프로세스가 여러 개라면,,?
패킷에 IP 주소만 담겨져 있다면 많은 프로세스 중 어떤 것을 선택해야 할지 모를 것이다 ㅠㅠ
TCP/IP 패킷을 다시 한번 확인해보자!
TCP 세그먼트에 PORT
정보가 있는 것을 확인할 수 있다.
이 포트 번호를 통해 어떤 프로세스를 선택해야 하는지 알 수 있다!
📌 PORT 번호
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트 번호로, 사용하지 않는 것이 좋다!
FTP
: 20, 21TELNET
: 12HTTP
: 80HTTPS
: 443
IP
주소는 여기저기 많이 사용된다.
하지만 이 IP 주소는 길어서(Ex. 200.200.200.2xx) 기억하기 어렵기도 하고, 변경될 가능성도 있다.
매번 이러한 IP 주소를 외워서 사용해야 한다면 정말정말 귀찮을 것이다. 😵
그래서 DNS
라는 것을 사용한다!
📌 DNS(Domain Name System, 도메인 네임 시스템)
: 도메인명을
IP
주소로 바꾸거나 그 반대로 변환해준다.
DNS
는 쉽게 생각해서 핸드폰 전화번호부라고 생각하면 된다.
이렇게 전화번호를 "야옹이"나 "멍멍이"로 저장해두면, 나중에 번호를 굳이 입력하지 않아도 "야옹이" 이름으로 전화를 걸 수 있다. "야옹이" 이름이 전화번호부를 통해 전화번호로 변환되는 것이다.
전화번호부와 비슷하게, IP 주소와 도메인명을 저장해두고, 도메인명으로 요청하면 알아서 IP 주소로 변환해준다. 만약 DNS가 없다면, 우리가 네이버나 구글을 접속할 때 IP 주소를 매번 입력해야 했을 것이다😣
출발지 IP
, 목적지 IP
등의 정보를 포함한다.전송 제어 프로토콜
로, 신뢰할 수 있는 프로토콜이다. IP 프로토콜 + 포트
3 way handshake
과정을 통해 서버-클라이언트는 서로를 신뢰할 수 있게 된다.사용자 데이터그램 프로토콜
이다.도메인 네임 시스템
으로, 도메인명을 IP 주소, 또는 그 반대로 변환해준다.