인터넷 네트워크

dong5854·2022년 2월 27일
0

김영한님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 통해 학습한 내용과 서적 및 인터넷을 통해 공부한 내용을 정리했습니다.

IP(Internet Protocol) 프로토콜

지정한 IP 주소(IP Adress)에 데이터를 전달하는 프로토콜로 패킷(Packet)이라는 통신 단위로 데이터를 전달한다. IPv4와 IPv6 두 가지 체계가 있다. IP 패킷 정보에는 출발지 IP와 목적지 IP등의 정보와 전송 데이터의 정보를 가지고 있다.

IP 프로토콜의 한계로는 아래와 같은 내용들이 있다.

  • 비연결성: 패킷을 받을 대상이 없거나 해당 대상이 서비스 불능 상태여도 이를 파악하지 못하고 패킷을 전송한다.
  • 비신뢰성: 중간에 패킷이 손실되거나 패킷이 순서대로 오지 않는 상황의 해결이 불가능하다.
  • 프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이여도 이를 구분할 방법이 없다.

TCP/UDP

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

img

이미지 출처: https://hahahoho5915.tistory.com/15

4계층 응용 계층(Application Layer)

OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당한다. TCP/UDP 기반의 응용 프로그램을 구현할 때 사용한다. 프로세스간 통신을 위해 설계된 계층이다.

예) FTP, HTTP, SSH

3계층 전송 계층(Transport Layer)

OSI 7계층의 전송 계층에 해당한다. 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다. 즉, 송신자와 수신자를 연결하는 서비스에 대한 정보를 담고 있다.

예) TCP, UDP

2계층 인터넷 계층(Internet Layer)

OSI 7계층의 네트워크 계층에 해당한다. 통신 노드 간의 IP패킷을 전송하는 기능과 라우팅 기능을 담당한다. 즉 패킷을 목적지로 전송하기 위한 정보를 가지고 있다.

예) IP, ARP, RARP

1계층 네트워크 액세스 계층(Network Access Layer or Network Interface Layer)

OSI 7계층의 물리계층과 데이터 링크 계층에 해당한다. LAN드라이버 LAN 장비 등 물리적 전송을 위한 계층이다.

프로토콜 계층

이미지 출처: 모든 개발자를 위한 HTTP 웹 기본 지식, 인프런, 김영한님

TCP(Transport Control Protocol)

인터넷 프로토콜 모음 중에서 IP 프로토콜과 함께 가장 핵심적인 프로토콜로, 통신 경로의 양 끝단의 위치한 시스템들 사이의 신뢰성 있는 연결형 서비스를 제공한다.

IP 프로토콜의 문제인 패킷의 소실과 순서를 보장해주지 않는 다는 점을 TCP를 통해 해결할 수 있다.


이미지 출처: 모든 개발자를 위한 HTTP 웹 기본 지식, 인프런, 김영한님

TCP 세그먼트는 출발지와 목적치 포트, 전송제어, 순서, 검증 정보에 대한 정보를 가지고있기 때문에 IP 프로토콜이 가지고 있던 문제들을 해결할 수 있다.

TCP 특징

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

  • 연결 지향 - TCP 3 way handshake(가상 연결)
    • 먼저 연결을 한 후 데이터를 전송하여 ip의 비연결성을 해결
      1. 클라이언트가 SYN 이라는 연결 요청을 보냄
      2. 서버에서 요청을 수락한다는 ACK와 연결을 요청하는 SYN를 보냄
      3. 클라이언트에서 요청을 수락한다는 ACK를 보냄
    • 위의 과정을 통해 연결이 완료되면 데이터를 전송한다.
    • 요즘에는 최적화되서 3번과정의 ACK에 함께 데이터를 보내기도 한다.
    • 물리적인 연결이 된 것이 아니라 논리적으로만 연결이 된 것이다.
  • 데이터 연결 보증
    • 요청을 정상적으로 받을 경우, 응답 서버에서 클라이언트에 데이터를 잘 받았다고 알려준다.
    • 전송을 했는데 서버에서 응담이 없다면 패킷이 중간에 소실되었다고 판단한다.
  • 순서 보장
    • 패킷이 순서대로 도착하지 않았을 경우 패킷의 순서가 꼬인 부분부터 다시 보내라고 클라이언트에 요청을 한다.
    • 서버에서 내부적으로 최적화하는 것도 가능하지만, 기본적으로는 클라이언트의 재요청하는 방식을 사용한다.
    • 이런 순서보장이 가능한 이유는 TCP 세그먼트가 가지고 있는 정보들을 활용하기 때문이다.
UDP(User Datagram Protrocol)

인터넷 프로토콜 모음 중에서 핵심이 되는 프로토콜 중 하나이다. 사전에 연결을 설정하지 않고 다른 호스트로 데이터그램을 전송하기 위한 프로토콜이다. 하부에 IP 프로토콜을 이용한다.

UDP 특징

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

  • 기능이 거의 없기에 하얀 도화지에 비유할 수 있다.
  • 연결지향 TCP 3 way handshake x
  • 데이터 전달 보증 x
  • 순서 보장 x
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • 정리
    • IP와 거의 같다. PORT와 체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요
  • 왜 UDP를 사용하는가
    • TCP는 3 way handshake를 하는 과정에서 시간이 소요되고 가지고 있는 데이터의 양도많기 때문에 속도를 더 높이기가 쉽지 않다.
    • UDP는 하얀 도화지와 같아 자신이 필요한 부분을 추가하여 애플리케이션에서 최적화를 하는 것이 가능하다.

PORT

같은 IP 안에서 프로세스를 구분하는 역할, IP를 아파트라고 하면 PORT는 몇동몇호인지를 나타낸다고 비유하면 이해하기 쉽다.

포트는 보통 0~65535 번까지 할당이 가능하다.

0 ~ 1023은 잘 알려진 포트라고 하여 사용하지 않는 것이 좋다.

FTP - 20, 21

TELNET - 23

HTTP - 80

HTTPS - 443

DNS(Domain Name System)

DNS를 사용하는 이유?

  • IP는 기억하기 어렵다.
  • IP는 변경될 수 있다.

DNS는 특정 컴퓨터 혹은 네트워크로 연결된 임의의 장치의 주소를 찾기 위해 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호로 변환해 준다.

참고자료:
김영한님의 인프런 강의 "모든 개발자를 위한 HTTP 웹 기본 지식"
쉽게 배우는 데이터 통신과 컴퓨터 네트워크, 한빛아카데미, 박기현 지음
https://kotlinworld.com/92
https://hahahoho5915.tistory.com/15
https://velog.io/@jehjong/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9D%B8%ED%84%B0%EB%B7%B0-TCPIP-4%EA%B3%84%EC%B8%B5
https://ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%EB%84%A4%EC%9E%84_%EC%8B%9C%EC%8A%A4%ED%85%9C

profile
https://github.com/dong5854?tab=repositories

0개의 댓글