김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리하였습니다.

또한, 망나니개발자님의 블로그를 참조하였습니다.

 

인터넷 네트워크

클라이언트와 서버는 인터넷을 통해 데이터를 주고 받는다.

(사진 출처: 인프런 강의)

 

인터넷 프로토콜(IP)이란?

img

(사진 출처: 벨로그)

 

복잡한 인터넷 망에서 Client와 Server간에 통신을 하려면 최소한의 규칙이 필요한데, 이것이 바로 IP이다.

 

 

인터넷 프로토콜(IP) 역할

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

 

IP 패킷의 구성

출발지 IP, 목적지 IP, 데이터 및 기타 정보를 포함한다.

img

(사진 출처: 네이버 블로그)

 

 

IP 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 목적지까지 패킷의 정확한 전송을 보장하지 않음-> 패킷이 순서대로 안오면?
    • -> 중간에 패킷이 사라지면?
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

OSI 7계층 및 TCP/IP 4계층 구조

(사진 출처: 티스토리)

 

TCP(Transmission Control Protocol)

TCP는 전송 계층의 대표적인 연결지항 프로토콜이다.

TCP 패킷은 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함한다.

 

 

TCP/IP 패킷 정보

(사진 출처: 인프런 강의)

 

TCP 특징

  • 연결 지향 프로토콜
  • 가상 회선 방식
  • TCP 3 way handshake (연결 설정) 및 4 way handshake (연결 해제)
  • 흐름 제어 및 혼잡 제어
  • 데이터 전달 보증
  • 전송 순서 보장
  • 높은 신뢰성 보장
  • UDP보다 느린 속도

 

TCP 3 way handshake

정확한 전송을 보장하기 위해, 사전에 통신하는 장치 간의 논리적 연결을 확인하고 세션을 수립하는 과정

 

(사진 출처: 인프런 강의)

 

UDP (User Datagram Protocol)

  • 하얀 도화지에 비유할 수 있다. 기능이 거의 없다.
  • 비연결형 서비스
  • 데이터그램 방식
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 빠름
  • IP와 유사 + PORT(프로그램 구분) + 체크섬(메시지에 대한 검증)
  • 애플리케이션에서 추가 작업 필요

 

TCP vs UDP

TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정한다. 그렇기 때문에 높은 신뢰성을 보장하지만 속도가 비교적 느리다는 단점이 있다.

UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있다. 하지만 수신 여부를 확인하지 않기 때문에 속도가 빠르다. 애플리케이션 레벨에서 기능을 확장하는 등 최적화가 가능하다.

TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고 UDP는 실시간성이 중요한 스트리밍에 자주 사용된다.

 

 

PORT

같은 IP 내에서 프로세스(통신할 어플리케이션) 구분한다.

 

(사진 출처: 인프런 강의)

IP가 아파트라면 PORT는 몇 동, 몇 호인지 나타낸다.

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

 

DNS (Domain Name System)

IP는 기억하기 어렵다.

IP는 변경될 수 있다.

DNS는 도메인 명을 IP 주소로 변환한다.

 

(사진 출처: 인프런 강의)

'Computer Science > 📡Network' 카테고리의 다른 글

[Network] 네트워크 기본 - 2  (0) 2021.11.12
[Network] 네트워크 기본 - 1  (0) 2021.11.05
[Network] HTTP 메서드  (0) 2021.10.11
[Network] HTTP 기본  (0) 2021.10.04
[Network] URI와 웹 브라우저 요청 흐름  (0) 2021.10.02
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기