인터넷 통신
인터넷에서 컴퓨터 둘은 어떻게 통신?
- 클라이언트와 서버 사이에 복잡한 인터넷 망이 존재하고, 인터넷망에 수많은 중간 노드들을 거친다.
- 어떻게 안전하게 도착할까? -> IP에 대한 학습 필요
IP(인터넷 프로토콜)
- 데이터를 주고 받는데 최소한의 규칙이 필요
- IP 주소 부여
IP 인터넷 프로토콜 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
IP 패킷 정보
- 출발지 IP, 목적지 IP, 기타.....
- 전송 데이터
클라이언트 패킷 전달(요청)
- IP 패킷 정보를 담은 패킷이 클라이언트(출발지 IP)에서 인터넷망의 많은 노드들을 거쳐 서버(도착지 IP)로 전달
서버 패킷 전달(응답)
- 클라이언트의 요청에 대한 응답 message를 담은 패킷을 서버(출발지 IP)에서 클라이언트(도착지 IP)로 전달
IP 프로토콜의 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 : 중간에 패킷이 사라지는 경우, 패킷이 순서대로 안오는 경우
- 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우 어떻게 구분?
- IP 프로토콜의 한계를 극복하기 위해서는? TCP, UDP 프로토콜에 대한 학습 필요
TCP, UDP
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 : HTTP, FTP
- 전송 계층 : TCP, UDP
- 인터넷 계층 : IP
- 네트워크 인터페이스 계층
프로토콜 계층
- 애플리케이션 -> OS -> 네트워크 인터페이스
1. 애플리케이션
- 프로그램이 Hello, world! 메시지 생성
- SOCKET 라이브러리를 통해 전달
2. OS
- TCP 정보 생성, 메시지 데이터 포함
- IP패킷 생성, TCP 데이터 포함
3. 네트워크 인터페이스
- LAN 카드 통해서 인터넷으로 나감, Ethernet frame(MAC 주소와 같은 물리적 주소 포함) 포함
TCP/IP 패킷 정보
- IP 패킷
- 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보... -> IP 한계를 해결(순서, 제어 등등)
- 전송 데이터
TCP 특징
전송 제어 프로토콜(Transmission Control Protocol)
- 연결 지향 : 연결을 한 후에 메시지를 전송, TCP 3 way handshake(가상 연결)
- 데이터 전달 보증 : 중간에 패킷이 누락이되면, 전송측에서 알 수 있음
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재 대부분 TCP 사용
TCP 3 way handshake
- SYN : 접속 요청
- ACK : 요청 수락
1. 클라이언트 -> 서버 : SYN
2. 서버 -> 클라이언트 : SYN + ACK
3. 클라이언트 -> 서버 : ACK
4. 데이터 전송
참고
- 3. ACK을 전송할 때, 4. 데이터도 같이 전송 가능
- 중간에 수많은 노드들을 거쳐야하기 때문에, 아직까지 실제로 연결된 상태는 아니고, 논리적으로 연결되었다고 가정하는 단계
UDP 특징
사용자 데이터크램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결 지향 : TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
- TCP는 모두 구축되어 있어서 건드릴 수 있는 것이 없지만, 최적화가 자신이 있다면 UDP 사용
PORT
- 0~65535 할당 가능
- 0~1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP : 20, 21
- TELNET : 23
- HTTP : 80
- HTTPS : 443
한번에 둘 이상 연결해야 하는 경우 ex) 게임, 화상통화, 웹 브라우저 요청
PORT - 같은 IP 내에서 프로세스 구분
ex) 게임 서버 연결
클라이언트
IP : 100.100.100.1, PORT : 10010
서버
IP : 200.200.200.2, PORT : 11220
ex)
IP : 아파트
PORT : 동호수
DNS
- IP는 기억하기 어려움
- IP는 변경될 수 있음
도메인 네임 시스템(Domain Name System)
- 전화번호부
- 도메인 명을 IP 주소로 변환
- DNS 서버
| 도메인 명 | 서버 |
| abc.com | 200.200.200.2 |
| efg.com | 100.100.100.1 |
출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'HTTP 웹 기본 지식' 카테고리의 다른 글
| HTTP 상태코드 (0) | 2021.07.28 |
|---|---|
| HTTP 메서드 활용 (0) | 2021.07.27 |
| HTTP 메서드 (0) | 2021.07.26 |
| HTTP 기본 (0) | 2021.07.25 |
| URI와 웹 브라우저 요청 흐름 (0) | 2021.07.25 |