IP
인터넷에서 컴퓨터들은 여러 노드들을 거쳐서 서로 통신을 한다. (이 과정에서 우리 집에서 준용이 집으로 데이터를 보낼 때 날마다 다른 노드를 타고 갈 수 도있다. 인터넷 망은 매우 복잡하기에 출발지와 목적지가 같아도 다른 경로를 사용할 수 있다는 뜻이다.) 이때 컴퓨트들은 각자의 IP(Internet Protocol) 주소를 갖는다. IP는 지정한 주소로 패킷(packet, package + bucket)이라는 통신 단위로 데이터를 전달한다. 패킷에는 출발지 IP, 목적지 IP 등과 전송 데이터로 이루어져 있다.
IP프로토콜의 한계
- 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송. 준용이 집 컴퓨터가 꺼져있어도 내가 알 수 있는 방법이 없다. 일단 전송한다.
- 비신뢰성 - 중간에 패킷이 손실 되거나 데이터의 $순서가 바뀔 수 있다. IP가 이것들을 보장해주지 않는다.
- 프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개일 경우 구분할 방법이 없다. 내가 카카오톡과 디스코드를 동시에 실행 중인데 우리 집이기에 IP는 동일하다. 그러면 메시지가 왔을 때 어디로 와야 할지 구분할 수 없다.
TCP
이런 IP 프로토콜의 단점을 보안하기 위해서 데이터를 IP로 감싸기 전에 먼저 TCP로 우선 감싸준다.
TCP 특징으로 TCP 3 way handshake가 있다.
IP프로토콜의 비연결성 문제를 해결해주는 방법이다. 컴퓨터 간의 응답을 통해 통신 가능 여부를 확인한다. 이 과정은 두 컴퓨터가 물리적으로 연결되는 것이 아닌 논리적으로 연결되는 과정이다. 요즘은 최적화가 되어 3,4단계 즉 클라이언트가 ACK를 전송할 때 데이터를 같이 묶어서 보낸다.
TCP 특징
- 데이터 전달 보증 - 서버에서 클라이언트가 보낸 데이터를 전송받았는지 여부를 확인할 수 있다.
- 순서 보장 - 데이터 순서가 바뀌었을 경우 서버에서 이를 확인하고 재요청할 수 있다.
이러한 장점들로 TCP는 신뢰할 수 있는 프로토콜이 되었고 현재는 대부분 TCP를 사용한다.
UDP
TCP는 여러 과정이 많이 일어나다 보니 전송 속도가 조금 느릴 수 있다. 이때 TCP와 같은 계층에 있던 UDP를 사용할 수 있다. UDP(User Datagram Protocol)는 기능이 거의 없다. IP에서 PORT와 체크섬(데이터가 손상되었는지 확인) 정도만 추가한 상태이다. 기능이 많이 없어서 단순하고 빠르며 하얀 도화지 같은 상태이므로 사용자가 애플리케이션에서 추가 작업이 가능하다.
PORT
같은 IP에서 여러 작업이 일어났을 경우, 예를 들면 본인이 컴퓨터로 카카오톡, 애플 뮤직, 인터넷을 실행 중이다. 모두 같은 IP를 갖고 실행되고 있다. 이렇다면 서버에서 응답이 왔을 때 이를 어디에서 보여줘야 할까??? 이를 해결하기 위해서 나온
개념이 PORT이다. 같은 IP 내에서 프로세스 구분을 해준다.
DNS
DNS(Domain Name System)는 전화호부로 비유할 수 있다. 우리가 구글을 들어가고 싶으면 구글의 IP주소를 알아야 한다. 이때 사이트마다 숫자로 이루어져 있는 IP를 외우고 IP가 바뀌었을 경우 그때마다 다시 외워야 하는 것은 불가능하다.
그래서 우리는 도메인 명을 입력하고 들어간다. 이것이 DNS이다. 구글에서 IP주소가 바뀌었으면 DNS 서버에 있는 IP주소를 바꾸면 된다. 사용자인 우리는 전과 같이 도메인 명 google.com을 입력하고 들어가면 된다.
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런...
www.inflearn.com
'Network & CS' 카테고리의 다른 글
http 일반 헤더 (쿠키?) (3) | 2022.09.11 |
---|---|
HTTP 상태 코드 (404 error??) (1) | 2022.09.02 |
HTTP 메서드 (GET, POST, PUT, PATCH, DELETE), 메서드 속성 (0) | 2022.08.23 |
HTTP란? & HTTP 메시지 (0) | 2022.08.19 |
URI (1) | 2022.08.19 |