인프런 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 내용을 정리한 것입니다.
인터넷 네트워크
인터넷 통신
: 인터넷에서 컴퓨터 둘은 어떻게 통신할까?
IP(인터넷 프로토콜)
: 지정한 IP주소(IP Address)에 데이터를 전달
: 패킷(Packet)이라는 통신 단위로 데이터를 전달
IP 패킷 정보
: 출발지 IP, 목적지 IP, 기타 ...
: 전송데이터
IP 프로토콜의 한계
: 비연결성(패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다)
: 비신뢰성(중간에 패킷이 사라지면? / 패캣이 순서대로 안오면?)
: 프로그램 구분(같은 IP를 사용하는 서버에서 통신하는 APP이 둘 이상이면?)
ex) 게임하면서 음악 듣기
TCP 특징
(전송제어 프로토콜(Transmission Control Protocol))
: 연결지향 - TCP 3 way handshake
: 데이터 전달 보증(데이터 전송 -> 받았음!)
(데이터를 보낸걸 모름, 중간에 못보내면 내가 알 수 있다)
: 순서 보증
: 신뢰할 수 있는 프로토콜
: 대부부은 UDP를 사용한다
UDP 특징
(사용자 데이터그램 프로토콜(User Datagram Protocol))
: 하얀 도화지에 비유(기능이 거의 없다)
: 3 way hand shake X
: 데이터 전달 보증 X
: 순서보증 X
: IP와 거의 같다 + port 추가
: 보증은 없지만 속도가 빠르다. 그리고 단순하다.
: 애플리케이션에서 추가적인 작업이 필요하다
PORT
: 0~65535 할당 가능 / 0~1023은 잘 알려진 포트들(가급적 사용하지 않는다)
: FTP-20, 21 / TELNET - 23 / HTTP - 80 / HTTPS - 443
DNS
(도메인 네임 시스템(Domain Name System)
: 전화번호부!
: 도메인 명을 IP 주소로 변환한다
URI와 웹 브라우저 요청 흐름
URI(Uniform Resource Identifier)
: URI는 로케이터(locator), 이름(name) 또는 둘다 추가로 분류될 수 있다.
: URL - Locator : 리소스가 있는 위치를 지정
: URN - Name : 리소스에 이름을 부여
: 위치는 변할 수 있지만, 이름은 변하지 않는다!
: URN 이름만으로 실제 리소스를 찾는 방법은 보편화되어 있지 않다.