혼자 정리

[HTTP기본지식] 인터넷 네트워크 본문

네트워크

[HTTP기본지식] 인터넷 네트워크

tbonelee 2021. 11. 20. 21:43

강의를 듣고 혼자 메모한 내용입니다.

클라이언트와 서버가 인터넷을 사이에 끼고 어떻게 통신?

IP 주소라는 규칙을 통해 통신

  • 클라이언트와 서버가 IP주소를 부여받음
  • 클라이언트가 IP 패킷을 만들어서 보냄
    • 출발 IP 주소, 목적 IP 주소 etc. 포함
    • 인터넷 망에서 목적 주소를 향해 패킷이 전달됨
  • 서버가 패킷을 받아서 요청에 대한 응답을 보냄

IP 프로토콜의 한계

  • 비연결성
  • 비신뢰성
  • 프로그램 구분
    • 한 IP에서 통신하는 앱이 여러 개일 때 어떻게 대응?

그래서 등장한 것이..

TCP / UDP

인터넷 프로토콜 스택의 4계층

  1. 애플리케이션 계층 - HTTP, FTP
  2. 전송 계층 - TCP, UDP
  3. 인터넷 계층 - IP
  4. 네트워크 인터페이스 계층

구체적으로 어떻게?

예시)

  1. 프로그램이 Hello, world! 메시지 생성
  2. 소켓 라이브러리 통해 OS로 전달(여기까지 애플리케이션)
  3. TCP 정보 생성, 메시지 데이터 포함
  4. IP패킷 생성, TCP 데이터 포함(여기까지 OS 역할)
  5. 네트워크 인터페이스가 넘겨받아서 인터넷으로 보냄

IP 패킷이 담는 정보(추가되는 부분만)

  • 출발지 IP, 목적지 IP, 기타 정보

TCP/IP 패킷 정보

  • 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등등
  • IP의 한계를 해결하기 위한 것임을 알 수 있음

TCP 특징(전송 제어 프로토콜; Transmission Control Protocol)

  • 연결지향 - TCP 3 way handshake(가상 연결)
    • SYN: 접속 요청, ACK: 요청 수락
      1. 클라이언트가 서버에 SYN보냄
      2. 서버가 알았다고 ACK를 보내면서 비슷하게 SYN 보냄
      3. 클라이언트는 서버가 보낸 SYN에 대해 ACK 보냄(여기서 ACK에 데이터 같이 전송시킬 수 있음. 요새는 최적화가 되어서..)
    • 그러면 2.에서 ACK가 안 오면 서버에서 응답이 없는 것을 알고(문제라는 걸 알고) 클라이언트는 데이터를 보내지 않을 것
    • cf) 여기서 연결된 것은 물리적인 연결이 아니라 개념적인 연결
  • 데이터 전달 보증
    • 클라이언트가 서버에 데이터 보냈을 때 서버도 데이터 잘 받았다는 응답을 보내줌
    • 그래서 전달이 되었음을 보장할 수 있음
  • 순서 보장
    • 서버가 받은 패킷 순서가 잘못되면 잘못된 부분부터 다시 보내달라고 클라이언트에 요청(최적화 안했을 때 기본적인 경우)
    • 순서 정보, 검증 정보, 전송 제어 정보 등을 통해 확인하는 것

UDP 특징(사용자 데이터그램 프로토콜; User Datagram Protocol)

  • 기능이 거의 없음
  • TCP의 특징 x
  • IP와 거의 같은데 PORT, 체크섬 정도 추가
    • PORT통해 같은 서버에서 어떤 애플리케이션을 위한 데이터인지 알 수 있음
    • 체크섬을 통해 메시지가 맞는지 검증
  • 간단하니까 빠르고 데이터 크기가 작다는 장점
  • TCP는 이미 확고하게 되어 있어서 건드리기 힘듦
    • 만약 뭔가 새롭게 최적화된 프로토콜을 구현하고 싶으면 UDP위에 애플리케이션 계층에서 씌워주면 됨(최근에 UDP가 각광받는 이유)
    • HTTP3의 경우 3way 핸드쉐이킹까지 최적화해보자 하면서 UDP사용

PORT

역할 : 같은 IP 내에서 프로세스를 구분 가능하도록

포트 숫자별 쓰임새

  • 0 ~ 65535 : 기본적으로는 모두 할당 가능
  • 0 ~ 1023: 잘 알려진 용도로 보통 사용되기 때문에 사용하지 않는 것이 좋다
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443

DNS(도메인 네임 시스템; Domain Name System)

IP의 단점 : 기억하기 어렵, 변경될 수 있음

DNS 서버에 도메인 명에 IP가 연결되어 있음

  • DNS서버에 도메인 명을 물어보면 됨