Backend:: HTTP란?

jahlee·2023년 10월 7일

Backend공부

목록 보기
2/18

1. HTTP 란?

하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)은 월드 와이드 웹의 토대이며 하이퍼텍스트 링크를 사용하여 웹 페이지를 로드하는 데 사용된다. HTTP는 네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행된다. HTTP를 통한 일반적인 흐름에는 클라이언트 시스템에서 서버에 요청한 다음 서버에서 응답 메시지를 보내는 작업이 포함된다.

2. 프로토콜 스택

2-1. 응용 계층

HTTP, SMTP(간이 우편 전송 프로토콜), FTP(파일 전송 프로토콜) 등이 해당되며, 송수신측 사이에 주고 받는 서비스에 따라 응용 계층의 프로토콜이 달라진다. 웹 브라우저(클라이언트)가 웹 서버에 요청한 데이터가 HTML 문서라면 HTTP 프로토콜이 사용된다. 그리고 클라이언트가 데이터를 요청할 때는 GET, POST, PATCH, DELETE 등 HTTP 메서드, 네트워크 상 자원의 위치를 나타내는 정보인 URL 그리고 사용하는 HTTP 버젼 정보와 함께 정보를 요청한다. 그 외에도 클라이언트가 서버에 요청하는 정보가 메일, 파일 등이면 각각 SMTP 프로토콜, FTP 프로토콜이 사용된다.

2-2. 전송 계층

전송 계층은 데이터 전송의 신뢰성을 보장하기 위한 계층으로, 송신 측에서 수신 측으로 패킷이 정상적으로 전달되었는지 확인하는 역할을 수행한다. 또한 TCP(전송 제어 프로토콜)와 UDP(사용자 데이터그램 프로토콜)로 나뉘며, 각 프로토콜마다 서로 다른 특성을 갖는다.

TCP는 신뢰성과 정확성을 추구하는 연결형 통신 프로토콜을 따르기 때문에 신뢰할 수 있는 연결을 위해 3-way 핸드셰이크 과정을 거친다. 이 때 브라우저나 메일 등의 일반적인 애플리케이션이 데이터를 송/수신할 경우에는 TCP가 주로 활용된다. 반면 UDP는 효율성을 추구하는 비연결형 통신 프로토콜을 따르므로 핸드셰이킹 과정도 생략된다. 주로 데이터 전송의 정확성보다 신속성이 강조되는 스트리밍 방식의 동영상 서비스에 활용된다. 혹은 DNS 서버에 대한 조회 등 짧은 제어용 데이터를 송/수신할 경우에는 UDP를 쓴다.

3-way 핸드셰이크

TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.
3way handshake는 양쪽 모두 데이터를 전송할 준비가 되어있다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 다른 한쪽이 준비되었다는 것을 알 수 있도록 해준다.

Flag 정보

TCP Header에는 CONTROL BIT(플래그 비트, 6bit)가 존재하며, 각각의 bit는 "URG-ACK-PSH-RST-SYN-FIN"의 의미를 가진다.
해당 위치의 bit가 1이면 해당 패킷이 어떠한 내용을 담고 있는 패킷인지를 나타낸다.

  • SYN(Synchronize Sequence Number)
    연결 설정. Sequence Number를 랜덤으로 설정하여 세션을 연결하는 데 사용하며, 초기에 Sequence Number를 전송한다.
    따라서, Connection을 생성할때 사용하는 flag이다.
  • ACK(Acknowledgement)
    응답 확인. 패킷을 받았다는 것을 의미하는 flag이다.
    Acknowledgement Number 필드가 유효한지를 나타낸다.
    양단 프로세스가 쉬지 않고 데이터를 전송한다고 가정하면 최초 연결 설정 과정에서 전송되는 첫 번째 세그먼트를 제외한 모든 세그먼트의 ACK 비트는 1로 지정된다고 생각할 수 있다.
  • FIN(Finish)
    연결 해제. 세션 연결을 종료시킬 때 사용되며, 더 이상 전송할 데이터가 없음을 의미한다.
    4way handshake에서 사용한다.

2-3. 네트워크 계층

이 계층은 데이터를 원하는 목적지로 전송하는 역할을 수행한다. 송/수신 기기 사이에는 라우터란 네트워크 장비가 있는데, 데이터 패킷들이 바로 이들을 거쳐 수신 측으로 전달된다. 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 효율적인지 파악한다. 또한 경로를 결정하기 앞서, 원하는 네트워크를 식별하기 위한 목적지의 주소 정보인 IP 주소를 확인하는데, 목적지 IP 주소까지 어떤 경로를 거쳐 데이터를 보낼지 결정하는 것을 라우팅이라고 한다.

2-4. 데이터링크 계층

송/수신측 사이에 경로가 결정되었으면, 링크 계층은 한 노드에서 인접한 노드로 패킷을 보내기 위한 역할을 한다. 앞서 언급한 계층들을 모두 거친 상태라면, 데이터는 서버의 LAN(건물 안이나 특정 지역을 범위로 하는 지엽적인 네트워크)까지 도착한 것이다. 이제 데이터 링크 계층에서는 네트워크 장비 간에 신호를 주고받는 규칙으로 이더넷을 사용하며, 이는 랜에서 데이터를 정상적으로 주고 받기 위해 필요하다.

2-5. 물리 계층

컴퓨터와 네트워크 장비를 연결하고 컴퓨터와 네트워크 장비 간에 전송되는 데이터를 전기 신호로 변환하는 계층이다. 기본적으로 네트워크 통신에서는 0과 1만 사용되는데, 컴퓨터 내부에 존재하는 네트워크 장비인 랜 카드는 이러한 비트열을 전기 신호로 변환하는 역할을 수행한다.

네트워크 포트

어떠한 데이터가 송수신을 할 때 Datalink 계층에서는 호스트의 NIC로 MAC Address를 판별하고 Network 계층에서는 IP Address로 목적지를 판별한다.
이렇게 MAC Address와 IP Address를 통해 목적지 호스트까지 도달한 후에는 어떤 Process(프로세스)에서 데이터를 받을 것인지 를 알아야 하는데 이 때 쓰이는 것이 Port Number(포트 번호)다.

포트 포워딩

외부에서 공유기 내의 특정한 장치로 접속하기 위해서는 IP Address를 알아야 하지만 공유기 내부의 IP는 사설 IP로 이루어져 있어 외부에서 IP만으로 특정 PC를 지정할 수 없다. 따라서 공유기의 공인 IP로 접속한 후 특정한 PC로 연결되도록 포트 넘버를 공유기에서 정의해주는 작업이 필요하다.

포트 번호프로토콜목적
20 또는 21FTP파일 전송
22SSH보안 네트워크 연결
25SMTP이메일 전송
53DNS도메인으로 IP 확인
80HTTPWWW 연결
443HTTPS보안 WWW 연결
500ISAKMPIPsec 연결 설정 프로세스
3389RDP원격 데스크톱 컴퓨터 연결

이해한거 정리

  • 송신

응용 계층: 인터넷을 사용하는 모든 프로세스에서 사용한다. 어느 프로토콜을 사용할지 결정하고 데이터를 변환, 압축, 암호화한다.// 메세지

전송 계층: 응용 계층에서의 데이터를 segment들로 쪼갠다. 쪼개진 segment들을 패킷이라 부르며 각 패킷에는 발신/송신 포트 번호, 데이터 시퀀스 번호, Checksum을 담는다.(Checksum은 데이터 손상/손실을 체크할 때 사용)// 세그먼트

네트워크 계층: 전송계층에서의 패킷에 송수신 IP를 추가해주고, 패킷은 IP 주소를 찾아 패킷을 목적지까지 전달해주는 라우터를 통해 전달된다. IP 주소의 앞부분에 해당하는 정확한 네트워크에 먼저 패킷을 전달하고, 이어서 IP 주소의 뒷부분에 해당하는 호스트 (컴퓨터)에 이어서 패킷을 전달한다. // 데이터그램

물리 계층: 컴퓨터 간 통신은 0과 1을 활용해 모든 데이터를 전송할 수 있게 된다. 이러한 0과 1의 조합은 전선을 통해 아날로그 신호로 변환돼 (encoding) 목적지에 전달한다.// 프레임

  • 수신

각 계층은 데이터 헤드의 해당 계층 프로토콜을 수행하고 나머지 데이터를 상위 계층에 전달한다 생각하면 된다.

물리 계층: 목적지에 도착한 신호를 0과 1의 조합으로 해석한다(decoding).

네트워크 계층: 목적지 IP를 확인하고 목적지가 아니라면 라우터에서 패킷을 목적지 IP로 송신.

전송 계층: 패킷이 정상적으로 전달되었는지 확인하는 역할을 수행한다. 정상적으로 전달 되지 않았다면 다시 유실된 데이터 시퀀스의 재전송을 요청한다. 또한 Flow 컨트롤을 통해 데이터가 전송되는 양을 컨트롤하는 작업을 수행한다(장치별 데이터를 감당할 수 있는 양이 다르기 때문).

응용 계층: 최종적으로 데이터를 받게된다.

참조

https://joonfluence.tistory.com/96
https://haeunyah.tistory.com/85
https://better-together.tistory.com/89
https://developer.mozilla.org/ko/docs/Web/HTTP

0개의 댓글