아무래도 백엔드 개발자가 되기 위해선 네트워크에 대한 공부가 필수라고 생각 했는데 지금이 아무래도 공부하기 적절한 타이밍이라 생각했다. 물론 하루만에 모든 것을 알 수는 없고 앞으로 틈틈이 공부를 해야겠지만, 오늘 공부 한 내용에 대해선 간단하게 적어보며 생각을 정리하기로 했다. 나중에 추가적인 글을 쓸 수도 있고, 여기에 내용을 추가 할 수도 있다.
IP(Internet Protocol)는 인터넷에서 데이터를 주고받는 규칙이다. 우리가 이메일을 보내거나 웹사이트를 방문할 때, 데이터는 네트워크를 통해 움직이는데 이때 출발지와 목적지를 식별하기 위해 필요한 주소가 바로 IP 주소이다.
- IP 주소: 인터넷상에서 장치를 식별하는 고유한 숫자 조합.
- IPv4: 123.45.67.89 같은 형태로, 32비트 길이.
- IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 같은 형태로, 128비트 길이로 훨씬 더 많은 주소를 제공.
IP는 데이터를 올바른 장치로 전달하도록 보장한다는 막중한 역할을 가지고 있다.
하지만 IP만으로는 데이터 전송이 충분하지 않기 때문에, 데이터의 신뢰성(전송 성공 여부)과 속도를 관리하기 위해 전송 계층 프로토콜이 필요하다.
TCP(Transmission Control Protocol)
데이터를 안전하게 전송한다.
특징으로는 패킷이 손실됐을 시 재전송을 하기 때문에 데이터의 전달이 보장되고 데이터의 순서또한 유지된다.
이메일이나 웹사이트 접속 등에 사용된다.UDP(User Datagram Protocol)
데이터를 빠르게 전송한다.
특징으로는 전달을 보장하지 않고 데이터 순서 또한 유지가 되지 않는다.
스트리이나 화상 통화 등에 사용된다.
특징 TCP UDP 속도 느림 빠름 신뢰성 높음 낮음 사용 예시 HTTP, FTP, 이메일 스트리밍, VoIP
포트는 데이터를 장치 내의 특정 애플리케이션으로 보내기 위해 사용하는 숫자이다.
IP가 아파트의 동이라면 포트는 아파트의 호수로 비유할 수 있겠다.
대표적인 포트 번호로는,
HTTP: 80
HTTPS: 443
FTP: 21
가 있다.
DNS(Domain Name System)는 사람이 기억하기 쉬운 도메인 이름을 컴퓨터가 이해하는 IP 주소로 변환해주는 시스템이다.
- 예시 : https://github.com/KangSemin → 93.184.216.34(실제 주소 아님)
브라우저에 도메인을 입력하면 DNS 서버가 해당 도메인의 IP 주소를 반환해주고, 그 IP 주소로 웹 서버에 접속하는 과정으로 동작한다.
URI는 인터넷 리소스의 위치를 나타내는 고유한 이름인데, 웹 브라우저에서 어떤 사이트에 접속하기 위해 주소창에 입력하는 그것이 바로 URI이다.
https://www.example.com:443/path/to/resource?query=value#fragment
예를 들어 이런 주소가 있다고 쳤을 때의 구성요소는 다음과 같다.
- 프로토콜 : https → 데이터를 주고받는 방식.
- 호스트: www.example.com → 서버 주소.
- 포트 : 443 → 서버에서 사용하는 통신 포트.
- 경로 : /path/to/resource → 서버 내 특정 리소스 위치.
- 쿼리 : ?query=value → 추가 데이터 전달.
- 프래그먼트 : #fragment → 특정 문서 내 위치.
브라우저가 URI를 입력받고 서버에 요청을 보낼 때 과정을 간단히 나열하면 다음과 같다.
- DNS 조회
URI의 도메인 이름을 IP 주소로 변환.- 서버 연결
IP 주소와 포트를 통해 서버와 연결.- HTTP 요청 전송
브라우저가 요청 메시지를 서버로 보냄.- 서버 응답
서버가 요청을 처리하고 응답 메시지를 반환. (내가 주로 하게 될 일이다.)- 렌더링
브라우저가 받은 데이터를 화면에 표시.이 흐름이 브라우저에서 페이지를 요청하고 화면에 보여주는 기본 동작이다.