[HTTP] 인터넷 네트워크
네트워크란?노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나
→ 분산되어 있는 컴퓨터를 통신망으로 연결하는 것
노드란?
네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말
IP통신
클라이언트가 Socker(파일)을 전송 → 인터넷에 있는 수많은 노드를 통해 → 서버로 전송
IP(인터넷 프로토콜)역할
- 지정한 IP주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
위의 사진을 보면 클라이언트에게도 IP주소가 있고, 데이터를 받는 서버에도 IP주소가 있다.
즉, 어떠한 데이터를 보낼 때 최소한의 규칙이 필요한데 이를 패킷이라는 규칙으로 전송함
IP패킷에는 클라이언트의 IP주소, 서버의 IP주소등을 담고 있음 → 최소한의 규칙
- 클라이언트가 패킷에 데이터, 각 IP주소등을 담아 전달을 하면 인터넷망에 있는 노드들을 거쳐 도착지의 IP로 향함
- 서버는 받은 패킷정보들에 대해 상태코드처럼 데이터를 넣어서 다시 클라이언트에게 패킷을 전달함
IP 프로토콜의 한계
위의 사진을 보면 클라이언트가 서버로 데이터를 전송하는데 IP프로토콜 통신 방식의 경우에는 대상 서버가 ON/Off의 상태인지는 고려하지 않고 계속해서 데이터를 보냄
→ 즉, 데이터가 잘 전송이 됐는지 확인이 불가함
위 사진은 위에서 말했던 것처럼 인터넷망에는 수 많은 노드들이 존재한다고 했는데, 수 많은 노드들을 통해 패킷을 전달할 때 어떤 노드에 문제가 발생하여서 중간에 데이터들의 유실 가능성이 있음
- 패킷 전달 순서 문제 발생
보틍 데이터들을 전송할 때 용량이 크면 해당 데이터를 분리해서 전송을 하는데
분리된 여러개의 패킷이 이동할 때 가장 빠른 노드를 선택해서 전송을 하는데 이때, 서버에는 패킷의 순서가 변경되어서 전달이 될 수 있음
TCP/UDP
위의 IP프로토콜의 문제점을 보완해주는 통신방식이 바로 TCP이다.
클라이언트가 데이터 전송 → Socker(파일)을 통해 데이터를 전달
→ TCP를 통해 해당 Socket을 감쌈 → 넘어온 TCP를 IP로 감쌈 → Driver를 통해 NIC에게 전달
TCP의 특징
- 연결지향 - TCP 3 way handshake(가상연결)
- SYN → 접속 요청
- ACK → 요청 수락
- 처음에 클라이언트가 서버에게 접속이 가능한 상태인지 SYN을 전달
- 서버가 깨어있다면 SYN을 다시 클라이언트에게 보내고 클라이언트가 보낸 요청에 대한 수락을 의미히는 ACK도 같이 전달
- 클라이언트도 ACK를 다시 서버에게 전달(최근에는 동시에 데이터도 전달)
*위의 전달은 진짜 연결이 아닌 개념적으로 연결되어있음을 의미 → 인터넷 망에 있는 많은 노드들이 깨어있는지는 모름
- 데이터 전달 보증
- 전달하는 데이터에 TCP가 있다면 클라이언트가 보낸 데이터가 서버가 잘 받았다면 다시 서버가 클라이언트에게 데이터 전송유무를 보냄
위의 사진처럼 상태코드를 전송해서 클라이언트가 알 수 있음
- 순서 보장
- IP프로토콜의 문제점 중 하나가 패킷을 여러개로 분리하고 전송을 했을 때 순서가 맞지 않게 전송이 될 수 있는데 TCP는 순서가 잘못오면 순서가 맞지 않는 부분부터 다시 전송하라고 클라이언트에게 요청함
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 90% 이상 TCP 사용
UDP의 특징
- TCP 3way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- UDP는 위의 과정이 필요없기 때문에 상대적으로 속도가 빠름
- IP프로토콜과 거의 동일 + PORT + 체크섬 정도 추가
- 애플리케이션에서 추가 작업이 필요
PORT 란?
- 네트워크 서비스나 특정 프로세스를 식별하는 식별단위이다.
- 한 대의 컴퓨터에서 여러 개의 프로그램이 동시에 실행이 되서 어떤 프로그램에 접속하려는지 알려줘야하는데 이때 어떤 프로그램에 접속할지 알려주는 것이 PORT이다!
http**://127.0.0.1:8080 ⇒ 127.0.0.1은 IP주소, 8080이 PORT
PORT | 프로토콜 | 용도 |
22 | SSH | Secure Shell - ssh, sftp같은 프로토콜 및 포트 포워딩 |
80 | HTTP | 웹 페이지 전송 프로토콜 |
443 | HTTPS | HyperText Transfer Protocol over Secure Sockets |
DNS (Domain Name System : 도메인 네임 시스템), 네임서버
IP같은 경우는 숫자로 되어있고 연결되어 있는 네트워크의 종류가 바뀌면 변경되기 때문에 불편함
- 위의 사진처럼 도메인은 IP주소를 대신해서 사용하는 주소
- DNS처리 순서
- 브라우저에 google.com을 입력
- DNS에서 해당 도메인에 등록된 IP주소를 찾음
- 찾은 IP주소를 이용해 해당하는 웹 서버로 요청을 전달
- 클라이언트와 서버가 통신
📌 DNS는 UDP로 동작함
1. DNS질의는 신뢰성보다 빠른 응답시간이 더 중요함
2. 연걸상태를 유지할 필요가 없음