본문 바로가기

HTTP 웹 기본 지식

인터넷 네트워크

인터넷 통신

 

인터넷에서 컴퓨터 둘은 어떻게 통신?

- 클라이언트와 서버 사이에 복잡한 인터넷 망이 존재하고, 인터넷망에 수많은 중간 노드들을 거친다.

- 어떻게 안전하게 도착할까? -> 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