[Network] Internet Network

abi hong·2023년 7월 19일

AWS

목록 보기
6/11

강의 모든 개발자를 위한 HTTP 웹 기본 지식을 듣고 정리한 내용입니다.

인터넷 통신

인터넷에서 두 개의 컴퓨터는 어떻게 통신할까?
이때, 복잡한 인터넷 망을 통해 통신하다고 가정해보자

이러한 수많은 복잡한 상황을 어떻게 지나서 통신을 하는지 알아보자~!

IP(Internet Protocol)

최소한의 규칙으로, 클라이언트와 서버 각자의 IP 주소가 있다.

IP의 역할

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

  • 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
    이때, 패킷은 출발지 IP, 목적지 IP 등등을 가지고 있다.

IP의 한계

  • 비연결성

  • 비신뢰성

  • 같은 IP를 사용하는 서버에서 통신해야할 애플리케이션이 두개 이상일때, 구분 할 방법이 없다.

TCP / UDP

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

데이터 전송시 흐름
1. 문자 전송 프로그램이 "Hello, world!" 메시지 생성
2. Socket 라이브러리를 통해 메시지 데이터 전달
3. 메시지 데이터 포함해서 TCP 패킷 생성
4. TCP 데이터 포함해서 IP패킷 생성
5. LAN 카드를 통해 서버로 전송된다.

TCP 패킷 정보
출발지 Port, 목적지 Port와 전송 제어, 순서, 검증 정보와 관련된 데이터가 포함된다.

TCP (Transmission Control Protocol)

전송 제어 프로토콜이다. 신뢰할 수 있는 프로토콜로 현재 대부분은 TCP를 사용한다.

  • 연결지향 - TCP 3way handshake (가상연결)
    두 컴퓨터가 연결된 것을 확인 후 보낸다.
    요즘은 3번 ACK를 보낼 때, 데이터도 같이 보냄

  • 데이터 전달 보증
    데이터가 누락되면 알 수 있다.

  • 순서보장
    TCP 패킷에 들어있는 전송제어, 순서, 검증 정보 등을 통해 순서보장을 할 수 있는 것이다.

UDP (User Datagram Protocol)

TCP처럼 연결지향(TCP 3way handshake), 데이터 전달 보증, 순서 보장 다 안된다.

IP와 거의 같은데 PORT와 체크섬(맡는 데이터인지 확인)정도만 추가된다. 따라서 애플리케이션에서 추가 작업이 필요하다.

그럼 왜 쓸까?
TCP보다 전송속도가 빠르고 데이터의 양이 작기 때문에 최적화가 가능하다.

PORT

하나의 컴퓨터에서 여러 개의 애플리케이션을 사용하는 경우, 전송된 패킷이 어떤 애플리케이션에서 사용되는지 어떻게 알 수 있을까?

PORT를 사용하여 같은 IP 내에서 프로세스를 구분한다.

PORT는 '0 ~ 65535' 사이의 숫자로 할당 가능하고, '0 ~ 1023' 사이는 잘 알려진 포트로 사용하지 않는 것이 좋다.
ex. TELNET - 23 / HTTP - 80 / HTTPS - 443

DNS (Domain Name System)

IP는 기억하기 어렵고 변경될 수 있다. 따라서 Domain명을 등록하고 IP주소로 변환할 수 있다.

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

이 글은 저에게 많은 도움이 되었습니다.

답글 달기