단순 클라이언트와 서버의 연결이라면 케이블로 연결이 가능
멀어지면 인터넷 망을 사용해야하는데
어떠한 규칙(IP)으로 연결이 된다.
클라이언트와 서버의 IP 주소가 각각 필요
지정한 IP 주소에 패킷 단위로 데이터를 전달
출발지 IP, 도착지 IP, 기타
클라이언트에서 서버로 패킷을 전달하면 전달이 성공했다는 패킷을 서버에서 클라이언트로 보내준다.
비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성
중간에 사라지거나 여러개 보냈는데 순서대로 안오는 경우
프로그램 구분
같은 ip 사용하는 서버에서 통신하는 애플리케이션이 두 개 이상인 경우
전송 내용을 TCP로 포장 -> IP 포장 후 전송한다.
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등
연결지향(TCP 3 way handshake 가상 연결)
양방향 연결되어있을 때 보냄
데이터 전달 보증
순서 보장
잘못되면 잘못된 순서부터 재전송
TCP 정보에 포함되어있는 PORT는 같은 IP 내에서 프로세스를 구분하게 해준다.
0 ~ 65535 할당 가능
0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
IP는 기억하기 힘들고 변경될 수 있기 때문에 DNS를 사용
도메인 명을 IP 주소로 변환한다.
도메인 명을 사용해 DNS 서버에서 IP 주소를 찾고 접속할 수 있음
서버를 수평적으로 확장 할 수 있다.
URI 는 URL 과 URN 을 포함하지만
URN 이름만으로 실제 리소스를 찾는 방법이 보편화되지 않아서
URL과 같은 의미로 쓰임
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
호스트명을 DNS 조회하여 IP 주소로 HTTP 요청 메세지를 생성
현재 HTTP/1.1 주로 사용
HTTP/2, HTTP/3 도 점점 증가
HTTP 구조
시작라인 :
- 요청 메세지
HTTP 메서드 요청 대상 HTTP ver
- 응답 메세지
HTTP 버전 HTTP 상태 코드
헤더라인 : header-field = field-name ":" OWS field-value OWS
(용도 - HTTP 전송에 필요한 부가 정보)
바디라인 : 실제 전송할 데이터
Reference
유익해요