개발하는 프로 국밥러
article thumbnail

컴퓨터가 가까이에 유선으로 연결되어 있다면 어렵지 않게 통신할 수 있겠지만, 우리는 인터넷을 통해서 통신하는 세상에 살고있다.

 

그렇다면 컴퓨터는 인터넷 상에서 어떻게 통신하는 것일까?

 

인터넷에 검색해보면 아래와 같이 이해하기 힘든 그림들이 너무 많은데 김영한님의 강의를 통해 쉽게 정리 할 수 있었다. 

 

TCP / IP Layer Model

 

먼저 컴퓨터가 인터넷 상에서 통신을 하기 위해서 가장 기본적인 것은 다들 한번쯤은 들어봤을 법한, IP(인터넷 프로토콜) 이다. 우리의 컴퓨터는 인터넷을 통해 목적하는 IP 주소로 이동하며, 그 사이사이에 노드 단위로 이동한다. 

 

데이터를 전달할때는 데이터를 패킷이라는 단위로 전달하는데, 패킷에는 기본적으로 출발지IP, 도착지IP, 전송 데이터로 이루어져 있다고 생각하면 된다. 

 

IP에는 한계가 존재하는데 다음과 같은 한계가 존재한다. 

1. 비연결성

- 패킷을 받을 대상을 없거나 에러가 난 상태여도 패킷 전송을 한다.

2. 비신뢰성

- 중간에 패킷이 사라지고, 패킷의 순서가 변경될 수도 있다. 

3. 프로그램 구분

-같은 IP 를 사용하는 서버가 여러개일 수 있다..

 

때문에 우리는 TCP UDP 프로토콜을 사용하게 된다 .

인터넷 프로토콜의 계층은 크게 4가지로 나뉘며, 

-애플리케이션 계층 (HTTP)

-전송계층 (TCP / UDP)

-인터넷계층 (IP)

-네트워크 인터페이스 계층(하드웨어)으로 나뉜다. 

 

우리의 정보가 인터넷을 나가는 과정은 다음과 같다 .

-우리가 통신할 정보를 입력하면 소켓 라이브러리를 통해서 OS(TCP / IP) 로 이동하게 되고,

- 전송 데이터가 TCP / IP 의 추가적인 정보가 추가되어 랜카드를 통해 인터넷으로 나간다. 

인터넷 프로토콜 전송과정

TCP(전송 제어 프로토콜(Transmission Control Protocol)) 의 특징은 

1. 연결지향, 3 way handshake(실제로 연결된 것이 아닌, 가상의 연결이다 => 존재하는지를 확인한다고 생각하면 된다.)

- 3 way handshake 는s syn(전송?), ack(응답) 을 통해서 상대방이 존재하는 지를 확인한다.

- 생각보다 무거운 작업이다. 

3 way handshake

2. 데이터 전달 보증(말 그대로이다..)

3. 순서보장

- 순서가 맞지 않는다면 다시 보내라고 한다. 

=> 결론적으로는 신뢰할 수 있는 프로토콜이고, 현재는 대부분 TCP 를 사용한다. 

 

UDP(사용자 데이터그램 프로토콜(User Datagram Protocol)) 의 특징은

1. TCP의 기능(연결지향, 데이터 전달 보증, 순서 보장) 의 기능을 하지 않는다. 

2. 때문에 단순하고 빠르다.

3. IP 와 다른점은 port 가 있다는 정도이다. 
=> 최근 HTTP3.0 버전부터는 UDP를 사용한다고 한다. 

 

그런데 만약 하나의 IP 에서 많은 작업(게임, 영화보기, 음악듣기, 채팅 등...) 을 동시에 수행한다면 어떻게 될까??

이때 필요한 것이 바로 PORT 이다. 

PORT 는 하나의 건물의 수많은 방이라고 생각하면 편하다. 다음과 같이 하나의 IP 를 통해서 수많은 작업을 하기 위해 사용한다. 

'CS > 네트워크' 카테고리의 다른 글

JWT(Json Web Token)  (0) 2022.06.27
세션과 토큰  (0) 2022.06.27
리다이렉션?  (0) 2022.06.01
포트 포워딩  (0) 2022.04.16
왜 서버 구축에는 리눅스를 사용할까?  (0) 2022.04.13
profile

개발하는 프로 국밥러

@gugbab2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!