이 글은 인프런 김영한 강사님의 강의를 참고하여 작성하였습니다.
우리는 클라이언트와 서버를 크게 주고 받는다 생각한다...
그렇다 클라이언트와 서버는 인터넷을 끼고 통신을 하지.. 근데 수천억 명이 인터넷을 쓰는데 어떻게 실수 없이 원하는 대상에게 데이터를 어떤 방식으로 주고 받는걸까?
이런 역할을 한다. 거의 뭐 주소다
그러나 한계도 있겠지?
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능이라도 '패킷' 전송
- 대상 신경도 안 쓰고 보냄- 비신뢰성
- 중간에 패킷이 사라질 수 있다.
- 패킷의 순서가 뒤죽박죽으로 올 수 있음
- 프로그램 구분
- 같은 IP를 이용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우의 문제
그래서 ...
- 전송 제어 프로토콜
- 연결지향적임 - TCP 3 way handshake (가상연결)
- 그저 개념적으로만 연결이 된 상태라고 생각
- 데이터 전달 보증 -> IP 단점 해결
- 순서 보장 ->IP 단점 해결
- 신뢰할 수 있는 프로토콜 (현재 대부분 사용)
기능이 별로 없음 -> but HTTP3 로 인해 요새 뜨기 시작
1. 연결지향 x
2. 데이터 전달 보증 x
3. 순서 보장 x
4. 강점) 그러나 빠르고 단순
=> 정리: 걍 IP 같은데 여기에 PORT와 체크섬(메시지 맞는지 확인 정도)만 추가된 거임
쉽게 생각하자면 IP가 해당 아파트 주소라면 PORT는 아파트의 동 호수가 어딘지를 말해준다.
큰 예시로 HTTP는 80포트, HTTPS는 443 포트를 씀.
그래서 등장했다...
쉽게 '도메인들 전화번호부' 라고 생각하면 된다.
여담으로..... 맨 처음부터 DNS를 쓰진 않고 웹 브라우저가 판단하여 도메인은 DNS에게 던져주고 ip는 자기가 알아서 찾는다고 하더라