728x90
반응형

IP(Internet Protocol)

클라이언트 - 인터넷 - 서버

→ IP 주소 부여 (클라이언트: 100.100.100.1/ 서버: 200.200.200.2)

역할

  • 지정한 IP주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 전달
    • (IP 패킷(규칙): 출발지 IP, 목적지 IP, 기타) + 메시지(전송 데이터)

한계

  • 비연결성
    • 패킷 받을 대상 X or 서비스 불능 상태여도 패킷 전송
      • ex. PC 꺼져 있음/ 거기 안살고 있어도 우편 보냄

⇒ 대상 서버가 패킷을 받을 수 있는 상태인지 모름

  • 비신뢰성
    • 중간에 패킷이 사라지면?
      • ex. 멧돼지가 광케이블 끊음
    ⇒ 패킷 소실
    • 패킷이 순서대로 안오면? (약 1500백 바이트로 끊어서 보냄)
      • ex. 클라이언트) 1. Hello,/ 2. world! → 서버) 2. world!/ 1. Hello,
    ⇒ 패킷 전달 순서 문제 발생
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
      • ex. 인터넷 게임하면서 음악 듣기

⇒ TCP가 해결

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

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

{이더넷 프레임: {IP: {TCP: {전송 데이터: Hello}}}

  • IP 패킷: 출발지 IP, 목적지 IP, 기타 …
  • TCP 세그먼트: 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보…

TCP(Transmission Control Protocol, 전송 제어 프로토콜)

  • 연결지향 - TCP 3 way handshake (가상 연결)
    • 연결을 하고 메시지를 보냄
    1. connect, 연결 과정 ⇒ 물리적 X 개념적(논리적) O
      1. 클라이언트 -SYN(synchronize)→ 서버
      2. 서버 -SYN + ACK→ 클라이언트
      3. 클라이언트 -ACK (+ 데이터_최근 최적화 O)→ 서버
    2. 데이터 전송
  • 데이터 전달 보증
    • 패킷 중간 누락을 알 수 있음
    • 클라이언트 -데이터 전송→ 서버
      서버 -데이터 잘 받았음→ 클라이언트
  • 순서 보장
    • 클라이언트 -패킷1, 패킷2, 패킷3 순서로 전송→ 서버
      서버: 패킷1, 패킷3, 패킷2 순서로 도착
      ⇒ 서버 -패킷2부터 다시 보내→ 클라이언트
  • 신뢰할 수 있는 프로토콜
  • 현재 대부분 TCP 사용

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

  • 하얀 도화지에 비유(기능 거의 X)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 X, But, 단순하고 빠름
  • IP와 거의 같음 + PORT + 체크섬 정도만 추가
  • 애플리케이션에서 추가 작업 필요

→ TCP + IP = TCP/IP 패킷: 출발지 IP, PORT, 목적지 IP, PORT, 전송 데이터 …

  • IP: 목적지 서버 찾는 것
    • ex. 아파트
  • PORT: 서버 안 돌아가는 애플리케이션 구분하는 것 = 같은 IP내에서 프로세스 구분
    • ex. 몇 동 몇 호 / ex. 게임 8090, 화상통화 21000, 웹 브라우저 10010
    • 0 ~ 65535 할당 가능
    • 0 ~ 1023: 잘 알려진 포트, 사용하지 X것이 좋음
      • FTP - 20, 21
      • TELNET - 23
      • HTTP - 80
      • HTTPS - 443

⇒ IP 기억하기 어렵고 변경할 수 있음 → DNS


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

  • 전화번호
  • 도메인 명 → IP주소
  • 사용
    1. 클라이언트 -도메인 명 google.com→ DNS 서버
    2. DNS 서버 -응답: 200.200.200.2→ 클라이언트
    3. 클라이언트 -접속: 200.200.200.2→ 서버

 

모든 개발자를 위한 HTTP 웹 기본 지식 | 김영한 - 인프런

김영한 | 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연

www.inflearn.com

 

728x90
반응형
김앩옹