이 자료는 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 학습하고 정리한 자료입니다.
개발을 하다보면 특히 서버 개발을 하다보면 TCP/IP, UDP, DNS, handshake, HTTP, URL 등 네트워크 용어들을 많이 접하게 된다.
근데 정확히 이 친구들이 어떤 역할을 하는지 들어왔던 것에 비해 정확히 알지 못한다. 서버를 개발하는 사람이 네트워크를 몰라서 되겠는가.. 그래서 미뤄두고 묵혀왔던 네트워크 공부를 하며 시리즈로 정리해보려 한다.
백엔드 개발자라면 REST API에 대해 잘 알 것이다.
REST API는 HTTP 통신을 하며 HTTP는 TCP/IP을 이용한다. (REST API에 관해서는 다음에 알아보자.)
따라서 HTTP에 대해 이해하기 위해선 IP부터 차근차근 알아야 한다.
IP는 인터넷에서 메시지 보내기 위한 최소한의 통신 규약이다.
그리고 IP Address에 Packet이라는 통신 단위로 데이터 전달하는 역할을 한다.
패킷은 컴퓨터 네트워크에서 전달되는 데이터의 형식을 의미한다.
자세한 패킷 정보는 헤더편에서 다룹니다.
비연결성
비신뢰성
애플리케이션 구분
포트(Port)는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
IP의 한계를 극복하기 위해 나온 것이 바로 TCP이다.
TCP는 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 핵심 네트워크 프로토콜이다.
자세한 패킷 정보는 헤더편에서 다룹니다.
TCP/IP의 작동 방식을 아래 TCP/IP 4계층을 통해 알아보자.
1. 애플리케이션 계층
2. OS 계층
3. 네트워크 인터페이스
위 과정을 모두 거칠 경우 최종 결과물이 아래 형태처럼 된다.
연결지향(TCP 3 way handshake)
데이터 전달 보증
순서 보장
UDP는 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 프로토콜의 일종이다.
172.217.25.174
위 IP를 보면 바로 어느 웹사이트인지 판단이 가능한가?
해당 IP는 바로 google.com IP Address이다. 시간이 지나면 또 어떻게 바뀌었을지 모른다.
이러하듯 DNS는 인터넷 전화번호부라고도 하며 사람이 기억하기 쉬운 도메인명과 IP Adress을 이어주는 시스템이다.
기억하기 어렵고 변경될 수 있다는 문제점을 가진 IP Address를 해결하기 위해 생겼다.