해당 글은 인프런의 김영한님의 강의인 '모든 개발자를 위한 HTTP 웹 기본 지식'을 공부하며 작성한 글입니다.
TCP를 왜 사용하는가?
완벽한 비유는 아니지만 인터넷을 현실세계에 비유하자면 자동차와 도로, 그리고 사거리에 있는 신호등(?)을 예로 들 수 있겠다.
인터넷 안에는 서울의 도로처럼 수많은 도로들과 신호등들이 있다.
도로는 물리적인 랜선을 비유할 수 있겠고, 신호등들은 길을 가르켜주는 라우터로 비유할 수 있다. (네비게이션에 좀 더 가깝다랄까)
라우터들은 패킷에 담긴 정보를 보고 어디로 가야 더 빠를지 계산해서 길을 가르켜준다.
자동차는 인터넷 패킷이다. 출발지와 도착지가 정해져있고 안에는 데이터를 담고 있다. 이 데이터를 도착지까지 보내야한다.
자동차는 수많은 신호등들을 지나서 도착지까지 수많은 신호등들과 도로들을 지나서 가는데, 가다가 길이 끊킬 수 있고, 신호등이 고장날 수도 있다.
패킷은 도중에 손실될 수 있다.
우리가 인프런 강의를 본다고 생각하면, 이 큰 영상이 한 패킷에 담길 수 없을 것이다. 잘게잘게 잘라서 수많은 패킷을 보내는데, 어떤 패킷은 운이 좋아서 다른 패킷보다 늦게 출발했는데도 빨리 도착할 수도 있다.
순서를 보장하지 못한다
그래서 사용하는 것이 TCP이다.
패킷은 package + bucket의 합성어다 (처음앎)
TCP (전송 제어 프로토콜 Transmission Control Protocol)
클라이언트와 서버는 중간에 3번 악수를 한다.
이렇게하면 패킷 손실을 줄일 수 있다
만약 패킷이 중간에 빠져있다면 다시 보내줄 수 있을 것이다
이론 자체는 간단하다!
요즘은 하얀 도화지 같은 UDP가 각광을 받는다고 한다.
같은 IP 내에서 프로세스를 구분하는데 쓰인다.
Port는 항구라는 뜻이므로 나는 패킷을 데이터를 싣은 선박으로 비유하여 이해했다.
포트에는 Well-known port가 존재하므로 해당 포트들은 피하는 것이 좋다.
아이피는 외우기도 힘들뿐더러 변경될 수 있는 요지가 존재한다.
그래서 생긴것이 DNS(Domain Name System)이다.
DNS 서버는 도메인명을 아이피 주소로 변환해주는 서버다.
I - Identifier (식별)
L - Locator (위치)
N - Name (이름)
URI가 가장 큰 개념이며 하위에 URL과 URN이 존재한다.
URI이 맞냐 URL이 맞냐 혼동을 계속 불러오기 때문에 W3C 문서의 '1.3 Confusion' 부분에 따르면...
People who are well-versed in URI matters tend to use "URL" and "URI" in ways that seem to be interchangable. Among these experts, this isn't a problem.
URL과 URI를 혼용해서 사용해도 문제없는것으로 말하고있다.
뒤에 ?key=value&key=value
의 형태로 URI뒤에 붙는 것을 query parameter, query string (숫자를 적어도 문자열로 넘겨주기 때문에)등으로 부른다.