- 인프런 김영한 님의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 수강 후 정리한 내용입니다.
1. IP란
- Internet Protocol로 인터넷에서 사용하는 프로토콜이다.
- 지정한 IP 주소로 데이터를 전달하고, 패킷이라는 통신 단위로 전달된다.
- 내 컴퓨터에서 상대 컴퓨터(서버)로 인터넷을 통해 통신할 때 패킷을 전달할 때 사용된다.
- IP 프로토콜의 특징은 다음과 같다.
- 비연결성
- 해당 패킷을 받을 대상이 없거나, 서비스 불능 상태여도 패킷이 전송된다.
- 비신뢰성
- 전달 도중 패킷이 손실될 수 있다.
- 순서대로 패킷을 전송했지만 순서대로 도착하지 않을 수 있다.
- 프로그램 구분 불가
- 포트 정보가 없기 때문에 해당 서버에서 여러 개의 어플리케이션 중 어떤 애플리케이션에 도달해야 할지 모른다.
- 즉, 상대방의 서버의 상태와 관계없이 보내고, 도중에 패킷이 손실되는지, 전달이 잘 되었는지, 포트를 알고 있지 않기에 하나의 서버에서 돌 고 있는 여러 어플리케이션 중 어떤 어플리케이션으로 가야 하는지, 순서대로 전달이 되었는지 알 수 없다.
2. 인터넷 프로토콜 스택의 4 계층
- 웹 어플리케이션 -> TCP/UDP -> IP -> 내부 네트워크
- 어플리케이션인 웹 브라우저에서 http 요청 메시지가 생성되고, TCP/IP로 포장되어 네트워크를 통해 전송된다.
- IP 패킷에는 출발지 IP, 목적지 IP, 기타 데이터가 포함되어 있다.
- TCP 패킷에는 출발지, 목적지 PORT 정보가 포함되고, 위 IP의 특징을 상쇄시켜주는 전송 제어, 순서, 검증 정보 등이 포함된다.
3. TCP/UDP란
TCP
- Transmission Control Protocol로 위의 IP 프로토콜의 단점을 막아준다.
- 연결 지향
- 3 way handshake를 통해 상대방 서버와 나의 서버의 연결 상태를 확인한다.
- syn -> syn+ack -> ack -> 데이터 전송
- 데이터 전달 보증
- 데이터를 전송하면 잘 받았는지 확인을 할 수 있다.
- 순서 보장
- 만약 패킷 1, 2, 3 순서대로 보냈는데 서버에서 1, 3, 2 순서로 받았다.
- 그렇다면 서버에서 패킷 2번부터 다시 보내라! (예시) 이런 느낌으로 순서를 제어해준다.
- 3 way handshake으로 상대방과 나의 컴퓨터의 연결 상태를 알 수 있고(syn -> ack)
- 포트 정보가 있기 때문에 특정 어플리케이션에 도착할 수 있다.
- 패킷의 순서가 뒤바뀌어도 컨트롤해주고 패킷이 잘 전달되면 전달 완료도 알 수 있다.
- 따라서 신뢰할 수 있고, 대부분 TCP를 이용한다고 한다.
UDP
- UDP란 User Datagram Protocol로 TCP와 달리 기능이 별로 없다.
- 연결 지향 X, 데이터 전달 보증 X, 순서 보장 X
- 데이터의 전달 및 순서가 보장되진 않지만 TCP에 비해 빠르다.
- 따라서 TCP는 파일 전송과 같이 신뢰성이 중요한 서비스에 이용되고, UDP는 스트리밍과 같이 연속성이 더 중요한 서비스에 이용된다.
4. PORT
- IP 주소를 통해 상대 서버로 접속, port를 통해 컴퓨터에서 운영 중인 프로세스 중 어떤 프로세스에 접근해야 하는지 알 수 있다. 즉, 같은 IP 내에서 프로세스를 구분한다.
- 포트는 TCP 패킷에 포함되어 있다.
- 보통 http는 80 포트, https는 443 포트를 이용한다.
5. DNS란
- Domain Name System로 도메인 주소와 IP주소를 매핑시켜주는 역할을 한다.
- IP 주소는 외우기도 힘들고, 변경될 수도 있다.
- 위의 번거로움을 막기 위해 우리가 자주 사용하는 도메인 명(naver.com, google.com 등)을 이용해서 URL을 검색할 수 있게 한다.
- 도메인을 검색하면 내 컴퓨터에서 DNS 서버로 접근해서 해당 도메인에 맞는 IP를 받은 뒤, 해당 IP를 이용해 상대의 서버 컴퓨터로 접근하는 것이다.
'개발 도서, 강의 > 모든 개발자를 위한 HTTP 웹 기본 지식(김영한)' 카테고리의 다른 글
2. URI와 웹 브라우저 요청 흐름 (0) | 2021.08.28 |
---|