인터넷 프로토콜

Siwoo Pak·2021년 9월 14일
0

컴퓨터공학

목록 보기
8/8

1. 네트워크 계층

2. IP와 IP패킷

  • IP주소를 컴퓨터에 부여하여 이것을 이용하여 서버와 클라이언트가 통신을 한다.
  • IP는 지정한 IP주소에 패킷이라는 통신 단위로 데이터를 전달
  • 패킷은 pack과 bucket이 합쳐진 단어. 소포와 비슷하다고 생각하면 됨. IP패킷은 이를 데이터 통신에 적용한 것이라고 보면 됨
  • IP패킷은 전송 데이터를 무사히 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있음
  • 패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달하고 이를 통해 복잡한 인터넷 망 사이에서도 정확적 목적지로 패킷을 전송할 수 있음
  • 서버에서 무사히 데이터를 받으면 그에 대한 응답을 돌려줘야 함. 이 때도 IP패킷을 이용해 클라이언트에 전달
  • IP프로토콜의 한계
    • 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷전송(클라이언트에서 서버의 상황을 알 수 없기 때문에)
    • 비신뢰성
      • 중간에 패킷이 사라질 수 있음(중간에 있는 서버가 문제가 생길 경우 중간에 데이터 손실있더라고 클라는 알 수 없음)
      • 패킷의 순서를 보장할 수 없음(전달 데이터의 용량이 클 경우 패킷 단위로 나눠서 전달하는데 패킷들이 같은 노드로 전달되는 게 아니라 중간에 다른 노드를 통해 전달될 수 있기에 순서대로 서버에 도착하지 않을 수 있다)

3. TCP와 UDP

3.1 TCP

  • Transmission Control Protocol(전송 제어 프로토콜)
  • IP의 단점을 TCP프로토콜로 보완할 수 있음
  • HTTP메시지가 생성되면 소켓 라이브러리를 통해 전달
  • 소켓: 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, "네트워크 환경에 연결할 수 있게 만들어진 연결부"
  • IP패킷을 생성하기 전 TCP세그먼트 생성
  • TCP/IP 패킷은 랜카드와 같은 물리적계층을 지나기 위해 이더넷 프레임워크에 포함되어 서버로 전송
  • TCP 세그먼트: 출발지/도착지 포트, 전송제어, 순서, 검증 정보등이 담겨있음
  • 특징
    • 연결 지향: TCP 3way handshake(가상연결)

      • TCP 3-way Handshaking 과정
        클라이언트->서버: TCP SYN
        서버->클라이언트: TCP SYN ACK
        클라이언트->서버: TCP ACK
      1. A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.
      2. B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
      3. A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.
      • 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알수 있도록 한다.
      • 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻을수 있도록 함.
        SYN: Synchronize Sequence Number
        ACK: Acknowledgment
    • 데이터 전달 보증
      • TCP는 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 IP패킷의 한계인 비연결성을 보완할 수 있음.
    • 순서 보장
      • 만약 패킷이 순서대로 도착하지 않는다면 TCP세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있으며, 이를 통해 IP패킷의 한계인 비신뢰성을 보완할 수 있음.
    • 신뢰할 수 있는 프로토콜(UDP에 비해)
  • 같은 계층인 UDP보다 상대적으로 신뢰할 수 있는 프로토콜인 이유

3.2 UDP

  • User Datagram Protocol(사용자 데이터그램 프로토콜)
  • 특징
    • 하얀 도화지에 비유(기능이 거의 없음)
    • 비 연결지향
    • 데이터 전달 보증X
    • 순서 보장X
    • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
    • 신뢰성보다는 연속성이 중요한 서비스(실시간 스트리밍)에 자주 사용됨

3.3 TCP vs UDP

4. HTTP

4.1 역사

  • HTTP/1.1, HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 프로토콜

4.2 특징

  • 클라이언트-서버 구조
    • 요청-응답 구조
    • 클라이언트는 서버에 요청을 보내고, 응답을 대기
    • 서버가 요청에 대한 결과를 만들어 응답
  • 무상태 프로토콜, 비연결성
    • 서버가 클라이언트의 상태를 보존하진 않음
      • 장점: 서버 확장성 높음(스케일 아웃)
      • 단점: 클라이언트 추가 데이터 전송
    • 상태 유지와 무상태의 차이
      • 상태유지: 중간에 다른 서버로 바뀌면 안됨(바뀔때 상태 정보를 다른 점원에게 미리 알려줘야 함)
      • 무상태: 중간에 다른 서버로 바껴도 됨
        • 갑자기 클라이언트의 요청이 증가해도 서버를 대거 투입할 수 잇음
      • 무상태는 응답서버를 쉽게 바꿀 수 있음.
    • 실무 한계
      • 모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있음.
      • 로그인이 필요없는 단순한 서비스 소개화면(무상태)
      • 로그인(상태 유지)
      • 로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지(브라우저 쿠키, 서버 세션)
      • 상태 유지는 최소한만 사용
  • HTTP 메시지
  • 단순함, 확장 가능

참고: 네트워크 쉽게 이해하기 22편

profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글