TIL(Today I Learned)

12월 16일(토)

공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.

모든 개발자를 위한 HTTP 웹 기본 지식

인터넷 통신

  • 클라이언트 서버는 인터넷 망을 통해 연결되어 있다.

  • 수많은 노드들이 중간에 있다.

  • 그래서 IP가 필요하다.

인터넷 프로토콜 (IP)

  • 지정한 IP 주소에 데이터 전달

  • 패킷이라는 통신 단위로 데이터 전달

  • 인터넷 프로토콜에 의해 패킷에 지정된 IP주소에 맞게 노드들끼리 패킷을 전달

  • 한계

    • 비연결성

      • 패킷 받을 상대가 없거나 불능
    • 비신뢰성

      • 패킷이 중간에 사라지거나

      • 패킷이 순서대로 안올경우

    • 프로그램 구분

      • 같은 IP 서버에서 통신하는 애플리케이션이 둘 이상일 경우
  • 이러한 한계를 위해 필요한 것이 TCP

TCP, UDP

  • 4계층
    • 애플리케이션 계층: HTTP, FTP
    • 전송 계층: TCP, UDP
    • 인터넷 계층: IP
    • 네트워크 인터페이스 계층
  • 프로토콜 계층
    1. 프로그램이 Hello world! 메시지 생성
    2. 소켓 라이브러리를 통해 전달
    3. TCP 정보 생성 > 메시지 데이터 포함
    4. IP 패킷 생성 > TCP 데이터 포함
  • IP 패킷 정보
    • 출발지 IP, 목적지 IP, 전송데이터, 기타….
  • TCP/IP 패킷 정보
    • IP 패킷: 출발지 IP, 목적지 IP, 전송데이터, 기타….
    • TCP 세그먼트: 출발지 포트, 목적지 포트, 전송제어 순서, 검증정보…
  • TCP 특징
    • 전송 제어 프로토콜
    • 연결 지향 - TCP 3 way handshake(가상 연결)
    • 데이터 전달 보증
    • 순서 보장
    • 신뢰할 수 있는 프로토콜
    • 현재는 대부분 TCP 사용
  • TCP 3 way handshake
    • 클라이언트 > SYN(접속 요청)
    • 서버 > SYN + ACK
    • 클라이언트 > ACK (요청 수락)
    • SYN: 접속 요청
    • ACK: 요청 수락
    • 개념적 연결이 아닌 가상적 논리적 연결
  • 데이터 전달 보증
    1. 데이터 전송
    2. 데이터 잘 받았음
  • 순서보장
    1. 패킷 1, 2, 3 순서로 전송
    2. 패킷 1, 3, 2 순서로 도착
    3. 패킷 2부터 다시 보내
  • UDP
    • TCP와 같은 계층
    • 하얀 백지
    • IP와 거의 같음. 포트, 체크썸 정도만 추가
    • 데이터 전달및 순서 보장되지 않지만 단순하고 빠름
    • TCP처럼 3 핸드 쉐이크 필요 없어서 빠름
    • 전송 제어 정보 등의 데이터를 넣지 않아도 됨
    • 최근엔 UDP가 뜨고 있음 (HTTP3)

PORT

  • 항구
  • 하나의 IP 주소에 둘 이상 연결할 때 필요함
    • IP 주소 + 포트번호 (애플리케이션, 프로세스 구분)
    • IP 가 아파트 포트는 몇동 몇호
  • 0~65535 할당 가능 / 0~1023 잘 알려진 포트 사용하지 않는 것이 좋음
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS 443

DNS

  • IP는 변경될 수 있다.
  • 도메인 네임 시스템
    • 도메인 명을 입력하면 DNS 서버에서 해당 도메인에 맞는 IP 주소를 전달해줌.
    • IP 가 변경 되면 DNS 서버에서 도메인 명에 해당하는 IP 주소를 변경해주면됨.