BackEnd/WEB

[HTTP] 인터넷 네트워크

샤아이인 2022. 1. 25.

내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다.

 

1. IP (인터넷 프로토콜)

Client가 지정한 주소, IP Address에 데이터를 전달하게 된다.

이때 단위가 Packet이라는 단위로 통신하게 된다. (패킷에는 출발지IP, 목적지IP, 등 이 담겨있다)

 

패킷이 Client로부터 출발하면 인터넷망 상에있는 여러 라우터들얼 거쳐가면서 목적지 서버까지 도달하게 된다.

서버는 잘 전달받았음을 알리기위해 Client에게 긍정 응답을 해준다.

 

패킷 교환방식의 장점

네트워크 리소스 점유 시간이 적으므로 나머지 컴퓨터들이 기다리게되는 문제를 해결할 수 있다.

 

클라이언트에서 서버로 이동하는 경로가 고정되어 있지 않다. 패킷마다 어떤 경로를 통해 전달될지가 결정되어있지 않아 경로상에 장애가 발생한다 하더라도 다른 경로를 통해 전송하게 되므로 안정성이 높다.

 

나누어진 패킷은 순서가 매겨지기에(넘버링) 중간에 유실된 패킷에 대한 재요청이 가능하여 전체 내용을 재전송하지 않아도 되는 장점이 있다.

 

IP 프로토콜의 한계

● 비 연결성

- 클라이언트는 서버가 존재하는지, 서비스 가능 상태인지 모름 (일단 요청함)

 

● 비 신뢰성

패킷 소실 : 결국 여러 서버를 거쳐서 전달되는 것. 중간 노드가 여러가지 이유로 작동하지 않는다면 내가 전달판 패킷 소실

패킷 전달 순서 문제 발생 : 1500 바이트가 넘으면 패킷 단위를 쪼개서 보내는데, 나뉜 패킷들이 모두 동일한 경로로 가지 않기 때문에 최종적으로 두번째 순서의 패킷이 먼저 도착할 수도 있음

- 이런 문제를 해결해주는게 바로 TCP 프로토콜이다.

 

● 프로그램 구분

- 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상일 경우 어떤 어플리케이션인지 구분이 어렵다.

 

2. TCP, UDP

인터넷 프로토콜을 크게 4계층으로 생각할수 있다. (일반적으로 배운 7계층만 알고있다가, 4계층이란 단어를 들으니 어색했다)

 

출처 - 인프런 김영한 HTTP 강의
출처 - 인프런 김영한 HTTP 강의

예를들어 채팅프로그램으로 메세지를 전송하고싶다면, 애플리케이션 계층에서 전송할 메세지를 생성한다.

이후 SOCKET을 통하여 하위 계층인 OS로 이동하여 TCP정보를 생성하고, 메세지 데이터를 감싸서 아래 계층으로 전달하면

IP 정보를 가진 패킷을 생성하여 TCP 데이터를 한번 더 감싼다.

 

실제 인터넷 네트워크(LAN 카드)를 통해 데이터를 내보낼 때 이더넷 프레임을 씌워 내보낸다.

(LAN카드에 들어있는 맥 주소 등, 물리적인 부분 포함한다)

 

● TCP/IP 패킷 정보

출처 - 인프런 김영한 HTTP 강의

TCP 정보에는 Port와 전송제어, 순서, 검증 정보를 포함하기 때문에 IP 프로토콜에서 발생했던 문제를 해결할 수 있다.

 

● TCP의 특징

 

TCP : Transmission Control Protocol , 전송 제어 프로토콜

신뢰할 수 있는 프로토콜, 현재 대부분 TCP 사용한다.

 

1. 연결지향 - TCP 3 way handshake(가상연결)

연결을 먼저 하고 데이터를 전송한다. 3 way handshake를 하면 클라이언트와 서버가 서로 신뢰할 수 있다.

→ 여기서 '연결'은 물리적으로 연결된 상태는 아님. 그냥 개념적,논리적으로 연결된 상태임.

출처 - 인프런 김영한 HTTP 강의

1) 클라이언트에서 서버로 SYN 을 보낸다.

2) 서버가 연결 가능한 상황이라면, 긍정 응답인 ACK 와 함께 SYN를 클라이언트에게 보낸다.

3) 클라이언트는 서버로부터 접속 요청을 수락하는 ACK를 전송하면서 데이터를 함께 전송할 수 있게되었다.

 

2. 데이터 전달 보증

메세지를 보내다 패킷이 누락되어 전송이 안되면 알 수 있다.

데이터를 전송하면 서버에서 데이터를 잘 받았다는 메세지를 전송해준다.

 

3. 순서 보장

클라이언트에서 패킷을 1-2-3 순서로 전송했는데 서버에 패킷이 1-3-2 순서로 도착하면 '패킷2 부터 다시 보내' 라는 메세지를 클라이언트에게 전송한다.

 

서버에서 내부적으로 최적화가 가능하지만, 기본적으로 클라이언트에서 재요청하는 방식을 상용한다.

 

이게 가능한이유는 TCP 세그먼트의 정보를 이용하기 때문이다.

 

● UDP의 특징

- 사용자 데이터그램 프로토콜

- 하얀 도화지에 비유(기능이 거의 없음)

- 연결지향 - TCP 3 way handshake X

- 데이터 전달 보증 X

- 순서 보장 X

- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름 정리

- IP와 거의 같다. +PORT +체크섬 정도만 추가 애플리케이션에서 추가 작업 필요

 

원래는 패킷 정보가 일부 소실되도 되는 실시간 영상공유와 같은 통신에 사용하였는데, 요즘은 영상조차 TCP/IP를 주로 사용한다고 한다.

 

TCP 계층은 이미 네트워크 표준이라 더 이상 최적화 불가능하지만, UDP는 직접 어플리케이션 레벨에서 무언가 만들어내면 된다.

최근에 HTTP 3 통신할 때 더 최적화하고 비용을 줄이기 위해 UDP 프로토콜을 채택하게 되면서 각광을 받게 됨.

 

3. PORT

출처 - 인프런 김영한 HTTP 강의

IP를 갖고 해당 컴퓨터를 찾았다면, 이후 해당 프로그램은 어떻게 찾을 것 인가? 이때 PORT 가 사용된다.

IP가 목적지 서버를 찾기 위함이라면, PORT는 서버 안에서 돌아가는 Process를 구분하기 위해 사용된다.

 

- 0 ~ 65535 할당 가능

- 0 ~ 1023 : Well-Known port, 사용하지 않는 것이 좋음

- FTP - 20, 21

- TELNET - 23

- HTTP - 80

- HTTPS - 443

 

4. DNS (Domain Name System)

왜 DNS(Domain Name System)?

- IP는 기억하기 어렵다.

- IP는 변경될 수 있다.

 

DNS(Domain Name System)

- 도메인 네임 시스템

'BackEnd > WEB' 카테고리의 다른 글

[HTTP] HTTP 상태 코드  (0) 2022.02.01
[HTTP] HTTP 메서드 활용  (0) 2022.01.31
[HTTP] HTTP 메서드  (0) 2022.01.28
[HTTP] HTTP 기본  (0) 2022.01.27
[HTTP] URI와 웹 브라우저 요청 흐름  (0) 2022.01.25

댓글