IP(Internet protocol)

  • 역할
    • IP 주소에 데이터 전달
    • Packet(통신단위)로 데이터 전달
  • 한계
    • 비연결성 : packet을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송(대상 서버가 패킷을 받을 수 있는 상태인지 모른다.)
    • 비신뢰성 : packet이 중간에 사라지거나 순서대로 안 올 수도 있다.
    • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 앱이 둘 이상일 경우

TCP(Transmission Control Protocol)

TCP/IP 패킷 정보

  1. IP 패킷 : 출발지 IP, 목적지 IP….
  2. TCP 세그먼트 : 출발지 PORT, 목적지 PORT, 전송 제어, 전송 순서, 검증 정보…
  3. 전송데이터
  • 특징
    • 연결지향 : 연결이 되야한다.
    • 데이터가 전달이 되었다는 것을 보증한다.
    • 순서를 보장한다.
    • 신뢰할 수 있는 프로토콜
    • 현재는 대부분 TCP 사용
  • TCP 3 way handshake(데이터 전송 전 연결 과정)
    1. 클라이언트 -> 서버 : SYN(접속 요청)
    2. 서버 -> 클라이언트 : SYN(접속 요청) + ACK(요청수락)
    3. 클라이언트 -> 서버 : ACK(요청 수락) (+ 데이터 전송도 가능)
    4. 서버와 클라이언트간 데이터 전송
  • 데이터 전달 보증
    1. 클라이언트 -> 서버 : 데이터 전송
    2. 서버 -> 클라이언트 : 데이터 잘 받았다고 보냄
  • 순서 보장
    1. 패킷1, 패킷2, 패킷3 순서대로 전송
    2. 패킷1, 패킷3, 패킷2 순서대로 도착하면
    3. 패킷2 부터 다시 보내라고 연락한다.

UDP(User Datagram Protocol)

  • IP와 거의 같다. + PORT + 체크섬 정도만 추가
  • 순서보장안하고, 데이터 전달 보증안한다.
  • 단순하지만 빠르다.
  • 최근에 뜨고 있다.

PORT

  • 같은 IP 내에서 프로세스 구분해준다.

  • 포트 번호

    • 0 ~ 65535 할당가능
    • 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
      • FTP : 20, 21
      • TELNET : 23
      • HTTP : 80
      • HTTPS : 443

DNS(Domain Name System)

  • IP는 기억하기 어렵고, 변경될 수 있다.
  • 그래서 이것을 기억하기 쉽도록 이름으로 대신 쓰는 것이다.

URI(Uniform Resource Identifier)

  • Uri : locator, name 또는 둘 다 추가로 분류 될 수 있다.
    • URI(Resource Identifier) = URL(Resource Locator) + URN(Resource name)
  • Uniform : 리소스 식별하는 통일된 방식
  • Resource : URI로 식별할 수 있는 모든 것
  • Identifier : 항목 구분을 위한 필요한 정보

  • URN(Resource name) : 리소스에 이름을 부여
  • URL(Resource Locator) : 리소스가 있는 위치를 지정 > 가장 많이 쓰임 (URI라고 생각하면 된다)

URL

  • 프로토콜 : https, http, ftp…
  • 호스트명 : www.google.com
  • 포트번호 : 443 (생략가능)
  • path : /home (리소스경로)
  • 쿼리 파라미터 : ?q=hello&a=true > key=value형태, ? 로 시작, &로 추가, 문자 형태

HTTP(HyperText Transfer Protocol)

  • 모든 것들을 전송한다. (ex. html, text, image, audio, video, file, json, xml …)
  • 클라이언트 서버 구조
  • 무상태 프로토콜(Stateless), 비연결성(연결을 유지하지 않는 모델)
  • HTTP 메시지
  • 단순함, 확장 가능

클라이언트 서버 구조

  • Request, Response 구조
  • 클라이언트는 서버에 요청을 보내고 응답이 올 때까지 대기한다.
  • 서버가 요청에 대한 결과를 만들어서 클라이언트에게 응답한다.

무상태 프로토콜(Stateless)

  • 서버가 클라이언트의 상태를 보존하지 않는다. > 전에 있던 행동들을 이어서 행동하지않고 매번 새로운 행동을 한다.

본 포스팅은 김영한 선생님의 강의를 보고 정리한 글입니다.

Tags:

Categories:

Updated:

Comments