모든 자료와 내용의 출처는 강의에 있으며 이 포스트는 공부한 것을 내 언어로 정리한 것이다
IP
- 인터넷(계층) 프로토콜
- 지정한 IP 주소에 패킷 단위의 데이터 전달
- 전달 시에는 여러 노드를 거쳐 전달한다
ex) 클라이언트의 IP: 100.100.100.1 , 서버의 IP: 200.200.200.2
- 한계: 비연결성, 비신뢰성, 프로그램 구분
➡️ 서비스 불능 상태여도 패킷 전송, 중간에 패킷이 사라지거나 순서가 바뀌어도 모름, 같은 IP를 사용하는 서버와 통신하는 애플리케이션이 2개 이상일 경우
TCP
- 전송 계층의 프로토콜 (IP를 보완하는 역할)
- PORT 를 갖는다
ex) IP add가 100.100.100.1 인 클라이언트가 IP add가 200.200.200.2 인 서버와 통신하며 게임과 화상통화를 동시에 함. 게임과 화상통화를 구분하기 위해 port number가 존재
➡️ IP address가 동이라면 PORT 넘버는 호수를 의미
- 특징: TCP 3-way handshake(연결지향적), 데이터 전달 보증, 순서 보장
⭐UDP는 IP와 거의 동일하다. 그러나 내가 TCP보다 성능을 좋게 할 수 있다면 전송 계층에서 UDP를 사용하고 애플리케이션 계층에서 추가 작업을 하여 사용하면 된다.
DNS
- 도메인 명을 IP 주소로 변환하는 시스템
- IP는 기억하기도 어렵고 변경도 된다 ➡️ 암기 불가
- DNS 서버에는 전화번호부처럼 도메인마다 IP 주소가 들어있다
ex) URI에 google.com이라고 치면 DNS 서버에서 IP 찾아서 바꿔준다
URI
Uniform Resource Identifier
로 리소스를 식별하는 통일된 방식을 말한다
- URL 과 URN으로 구성
- URL로 많이 쓰임
- 문법
scheme://[userinfo@] host [:port][/path][?query][#fragment]
ex) https:// www.google.com :433 /search ?q=hello&hl=ko
☑️ schemee : 프로토콜 (어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙)
☑️ host : 호스트명. 즉 도메인명 또는 IP 주소 입력
☑️ path : 리소스 경로. 계층적 구조를 가짐
☑️ query : ?로 시작, &로 추가. query 파라미터로 불림
웹 브라우저 요청 흐름
위와 같이 만들어진 요청을 서버에 보내고 서버에서 응답 패킷을 전달, 웹 브라우저에서 응답을 렌더링한다