해당 내용은 김영한님의 HTTP 웹 기본 지식
강의를 듣고 이해한 내용을 바탕으로 작성되었습니다.
IP는 Network Layer의 프로토콜입니다. 클라이언트와 서버는 IP 주소를 통해 통신을 진행할 수 있습니다.
컴퓨터통신 전공수업에서 배운 바와 같이 IP는 제공하는 기능이 거의 없는 신뢰할 수 없는 프로토콜입니다.
TCP는 신뢰할 수 있는 프로토콜로 3가지 Control을 제공해줍니다.
TCP는 IP에서는 제공하지 못했던 연결 설정을 통해 전용 연결(가상 연결)을 합니다. 따라서 둘만의 송수신 Window가 있어 수신측의 포화도를 보고 전송을 제어하고, 순서에 맞지 않게 패킷이 오더라도 다시 순서대로 정렬할 수 있습니다. 또한 ACK를 통해 패킷 손실에 대한 해결도 해줍니다.
UDP는 TCP와 달리 대부분의 기능을 제공하지 않습니다. 그렇다면 왜 UDP를 사용할까요? Real-Time Service를 요구하는 멀티미디어 등에서는 TCP에서 진행하는 여러 Control을 통해서 패킷이 전송된다면 시간 내에 데이터를 전달할 수 없습니다. 오버헤드가 크기 때문입니다. 이 때문에 UDP는 PORT 기능과 Checksum 기능만 제공하고 그 외의 기능은 제공하지 않습니다.
Port는 같은 IP 내에서 프로세스를 구분할 수 있도록 지정된 번호입니다.
0 ~ 65535까지 할당 가능하고, 그 중에서 0 ~ 2000번까지는 잘 알려진 Port번호로 사용을 권장하지 않습니다.
HTTP는 PORT 80, HTTPS는 PORT 443을 사용합니다.
Port는 localhost에서 개발해본 경험이 있다면 이미 사용해본 경험들이 모두 있습니다. 보통의 경우 웹 서버가 아니라 자신의 컴퓨터 자체에서 테스트를 해보고자 할 때 localhost:4000
이라는 주소를 쳐서 나오는 사이트를 이용했을텐데, 이때 4000이 Port 4000번입니다.
강의에서는 IP 주소는 아파트 동 번호, Port번호는 호수로 이해하면 쉽다고 하였습니다.
DNS는 Domain Name System입니다. Domain Name은 쉽게 생각하면 example.com
과 같은 주소라고 생각할 수 있는데, 물리 IP 주소와 1대1로 대응하며 특정 사이트에 접근하기 위해 IP 대신 사용하는 주소입니다. Host IP가 변할수도 있고, 일일히 주소를 외울수도 없기 때문에 DNS 서버를 통해 서버 내부에 저장되어있는 도메인과 IP를 매칭시켜 쉽게 Host에 접근할 수 있도록 도와줍니다.