본문 바로가기

서버

[HTTP] HTTP 공부시작설명 및 IP / TCP

728x90

 

/* HTTP 공부를 시작한 이유 */

원래는 무작정 스프링부트 소스, 강의 들을 보면서 웹사이트를 만들었다. 그 후에 스프링부트에 대해 조금은 알 수 있게 되었다. 그리고 백엔드에 조사를 더 해보니 HTTP/HTTPS, IP/TCP, 세션, 쿠키 등등 배워야 겠다고 느꼈다. 백엔드는 서버를 다뤄야 하는데 이들의 개념에 대해 무지해서는 되겠는가. 그래서 공부를 시작한다

 

클라이언트 <-> 중간 노드 <-> 서버

클라이언트는 서버에게 데이터를 전달해야 한다. 바로 전달을 하면 좋겠지만, 중간단계를 거친다. (중간노드들에게 보내고 보내서 마지막에 서버로 전달이 된다)

데이터를 전달할때는 패킷 (Packet) 이라는 통신단위를 이용한다.

이때는 IP (인터넷 프로토콜)을 이용하게 되는데 IP패킷에는 클라이언트 IP, 서버 IP를 필요로 한다. 

여기에는 3가지의 한계점이 있다.

 

1. 비연결성 : 서버의 PC가 꺼져있어도 패킷이 전송된다

2. 비신뢰성 : 여러 패킷을 보낼 경우 패킷이 순서대로 안올 수 있다. 오류 검사를 처리하지 않는다

3. 서버IP에서 여러 애플리케이션(음악, 게임)을 사용할때 PORT 문제가 생길 수 있다.

 

이런 문제점을 보완하기 위해 TCP (전송 제어 프로토콜) 이 나왔다.

TCP/IP를 이용하게 되면 패킷을 보낼때 패킷을 여러 조각으로 나누고 보낸다.

IP를 통해 중간노드들을 거치고 거쳐서 서버로 전달된 조각들은 순서가 뒤죽박죽이다. TCP는 조각들을 올바른 순서로 맞추고 누락된 조각이 있으면 클라이언트에 요청을 해서 다시 조각을 받는다. (다시 요청을 해서 조각을 받는 것은 3 way handshake 라고 한다 그리고 서버가 조각들을 잘 받았다고 클라이언트에게 메세지를 전달한다, 데이터 전달 보증 )

 

 

 

728x90

'서버' 카테고리의 다른 글

[Node.js] 이벤트 루프  (0) 2024.07.07
[Node.js] 무엇인가  (0) 2024.07.07
[서버] RESTful API  (0) 2024.03.30
[HTTP] 멱등성  (0) 2024.02.03
REST API  (0) 2024.02.03