🕸 1. 인터넷 네트워크
인터넷 통신
IP (아파트)
TCP, UDP (구축 완, 커스텀 가능)
PORT (몇 동, 몇 호)
DNS (전화번호부)
인터넷은 어떻게 통신하나?
중간에 수많은 복잡한 인터넷 망을 거쳐서 목적지까지 도착하려면 IP(인터넷 프로토콜) 주소 부여를 통해서 가능하다.
IP(인터넷 프로토콜)와 IP의 역할
메세지를 보낼 클라이언트가 IP 주소를 부여 받고, 메세지를 받을 서버도 IP 주소를 부여 받는데,
IP의 역할은
- 지정한 IP 주소에 데이터를 전달할 수 있도록 하는 최소한의 규칙이다.
- 그리고 패킷이라는 통신 단위로 데이터(메시지)를 전달하게 된다.
IP Packet = Package + Bucket의 합성어
출발지 IP 주소 (100.100.100.1), 목적지 IP 주소, 메시지가 들어있다.
그리고 노드 간에 해당 패킷을 던지다 보면 결국 최종적으로 목적지 IP 주소를 받을 수 있는 서버까지 도달하게 된다.
그러면 메세지를 받은 서버도 응답을 하기 위해 똑같은 패턴으로 IP 패킷 단위로 데이터를 전달하게 되고 출발지 IP 주소로 도달하게 된다.
IP 프로토콜의 한계
그러나 이 IP Packet으로만은 한계가 있다.
1. 비연결성
- 메세지를 받을 대상이 없는 경우에도 메세지를 보내버릴 수 있기 때문이다.
- 또는 대상 서버가 패킷을 받을 수 있는지 즉, 서비스가 불능 상태인지 모르고 보내는 상황이 있기 때문.
2. 비신뢰성
- (패킷소실) 중간에 전달해주던 노드가 꺼져서 패킷이 사라지거나
- 패킷을 여러개 보냈을 때 순서대로 도착하지 않을 수 있다.
(1500byte가 넘으면 데이터를 끊어서 보냄)
- 하나의 PC가 애플리케이션을 여러개 사용하는데 같은 IP를 사용할 경우에는 워케?!!
IP Packet의 문제를 해결해주는 2가지 TCP, UDP
1. socket 라이브러리를 사용해서 OS 계층으로 메시지를 넘기고,
2. hello 메시지에 TCP 정보를 씌워고, IP 관련 데이터를 씌운다. (이게 IP Packet이 생성된 것)
IP Packet은 결국 IP(TCP(진짜 내가 보낼 데이터))이렇게 구성되어 있는 것이다.
3. 그리고 네트워크 인터페이스 (LAN 카드)를 통해서 나갈 때 Ethernet frame을 통해서 나가게 된다.
Ethernet frame은 딥한 내용이라 패스한다...
TCP (Transmission Control Protocol) 전송 제어 프로토콜
TCP의 구성
출발지/목적지 PORT, 전송 제어, 순서, 검증 정보
그래서 IP 만으로 해결되지 않았던 문제들이 해결된다.
특징
- 연결지향[TCP 3 way handshake] : 쟤랑 나랑 연결을 하고 메시지를 보낸다는 것임, 저 집 컴이 꺼져있으면 연결이 안되겠지? 그러니까 일단 연결하고 메시지를 보낸다는 것
- 데이터 전달 보증 : 내가 메시지를 보냈는데 중간에 누락된 것을 알 수 있음
- 순서 보장
- 신뢰할 수 있는 프로토콜로 현재는 대부분 TCP 사용
TCP 특징1. 연결지향, TCP 3 way handshake
1. SYN : 클라이언트가 서버로 SYN 메시지를 보낸다.
2. SYN + ACK : 클라한테 서버가 ACK라고 수락했다는 메시지를 보낸다.
3. ACK : 동시에 클라도 알았다는 메시지를 보낸다.
4. 데이터 전송
이렇게 할 경우, 클라와 서버가 연결됐다는 것을 인식할 수 있다.
만약 서버가 꺼져있는 경우, 1번 단계 이후가 없기에 4번이 없는 것임
최근에는 최적화가 되어서 3번, 4번이 동시에 일어남
*근데, 물리적으로 연결됐다는 것은 아님 / 그냥 아~ 서로 연결이 되었나보다~하고 중간에 있는 수많은 노드들은 놔두고 클라와 서버가 논리적으로 연결되었다고 생각하는 가상연결임 / 전용랜선이 생긴 것은 아님을 알길 바라며...
TCP 특징2. 데이터 전달 보증
데이터 전송을 하면 서버가 데이터를 잘 받았다고 클라한테 다시 보내줌으로써 잘 보냈다고 알 수 있음
TCP 특징3. 순서 보장
패킷3이 오면 패킷2부터 다시 보내라고 요청함
물론, 서버가 내부적으로 최적화를 할 수 있기는 함
근데 이게 어떻게 가능하냐! TCP 내에 전송제어, 순서, 검증 정보가 추가되어 있기 때문이다.
그래서 신뢰할 수 있는 프로토콜이라고 부르는 것이다.
UDP (User Datagram Protocol) 사용자 데이터그램 프로토콜
TCP와 같은 계층이자 IP 보다 바로 윗 계층이다.
- 연결지향X, 데이터 전달 보증X, 순서 보장X = 거의 하얀 도화지 같이 기능이 거의 없다.
- 그렇지만 단순하고 빠르다.
즉, IP와 거의 같지만,
- PORT와 체크섬(이 메시지에 대해 제대로 검증해주는 데이터)가 추가 된 것
이 포트는 하나의 IP에서 여러개의 애플리케이션이 작업할 수 있다.
(내 PC는 IP가 하나인데, 음악스트리밍도 가능하고 게임도 하는데 음악패킷, 게임패킷이 동시에 오는 것이 가능하게 함)
이걸 왜 쓰냐?
TCP는 다 좋은데, 3 웨이 핸드쉐이크 등등 하는데 데이터 양도 크고 전송 속도도 최적화하기 어려움
TCP는 손을 더 이상 못대.. 이미 구축이 다 되어 있는 상태라서, 근데 UDP를 통해서 손을 대서 최적화를 할 수 있는 것이다.
요새 각광을 받고 있음, 왜? -> 웹 브라우저에서 http3 통신할 때 더 최적화해보자고 하면서 UDP를 더 쓰자고 하기 때문임
PORT, 같은 IP 내에서 프로세스를 구분하는 것
Q. 한 번에 둘 이상을 연결해야 한다면?
Q. 게임도 하고, 화상통화도 하고, 웹 브라우저도 요청을 하고 있으면?
패킷들이 클라이언트한테 날아올텐데, IP로는 어떤 종류의 패킷인지 구분할 수가 없음 (반대로 서버로 날릴 때도 마찬가지임)
그래서, 출발지 PORT + 목적지 PORT가 있는 것임!!!!!!
IP는 출발지/목적지 서버를 찾는 것 (아파트 = 하나의 서버)
PORT 같은 IP 내에서 프로세스를 구분하는 것 (몇 동, 몇 호)
패킷 내에 출발지, 목적지 PORT가 있어서 구분할 수 있는 것임
왜 서버 8000, 8080, 5000, 3000번 포트 열겠다고 하는 거 많이 했었잖어...
DNS (Domain Name System) 도메인 네임 시스템
IP로 통신을 했는데 기억하기가 너무 어려움.. 200.200..2? 어? 그리고 변경될 수도 있음
엥..? 난 200.200.200.2만 기억하는데 바뀌면 접근을 못해..;
- 전화번호부 같은 서버
- DNS 서버에 도메인 명을 등록하면 IP 주소로 변환
도메인으로 먼저 찾는 것임, 그러면 DNS 서버가 응답을 줌
(google.com 내놔라! -> DNS 서버가 google.com의 IP 주소를 줌 -> 접근)
IP가 바뀌면, 구글이 바뀐 IP를 DNS 서버에 넣음 됨~
운영체제보다 훨씬 재밌고, 이해가 잘 가는구나, 얼마전에 아는 친구가 도메인 사서 본격적으로 뭐시기 시작했다고 했는데 도메인이 없었으면.. 제법 쉽지 않은 인생을 살았겠구나. 제법 많은 쇼핑몰들이 없었을지도...
'⭐️ Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] HTTP 헤더2 - 캐시와 조건부 요청2 (0) | 2022.10.03 |
---|---|
[네트워크] 상태코드 (0) | 2022.09.18 |
[네트워크] HTTP 메서드 활용 (1) | 2022.09.09 |
[네트워크] URI와 웹 브라우저 요청 흐름, HTTP (0) | 2022.08.26 |