인터넷 프로토콜

반응형
반응형

이것이 Ip 프로토콜의 한계라고 하는데... 
왜 IP 프로토콜은 위 한계를 같게 되는지 생각해보자.

보통 Ip 주소는 (우편) 주소로 비유된다.
즉, 255.255.255.0 라는 곳이 서울시 송파구 XXX로 변환이 가능하다는 이야기다.

또한 Ip주소는 서로 통신하기 위해서는 패킷으로 전송되어진다.

패킷이라는 건 종종 택배로 비유된다.

(여기에서는 패킷이 어떤것인지는 자세하게 설명하지는 않을 것이다.)

- 택배는 도중에 분실 위험이 존재한다.
- 택배는 구매한 물품 순서대로 오지 않는다.
- 배달부(택배)는 이사와 관련없다.(이들은 단지 배달일을 했을 뿐...)
- 받는곳의 주소가 같은 곳이 여러개다.

더 있겠지만... 위와 비교해보면 이렇게 4문장이 나온다.

그런데 우리는 어째서 위 문제점을 격지 못할까?
어떤식으로 신뢰도를 쌓을 수있었는지 생각해보자.

추가적으로 마지막은 택배가 아닌 방과 방끼리 선물 교환정도라 생각하면 좋을 것 같다.

그렇다면 이러한 문제점을 해결한 방법은 존재하지 않을 까?

tcp도입

tcp을 도입을 하는 것이다.
tcp에는 전송에 필요한 다양한 정보들이 들어 있다.

   3way handshake 방식으로 "택배는 도중에 분실 위험이 존재한다."에 대한 문제점을 해결 할 수 있다.
이방식은

마치 캐치볼을 연상케한다.
A가 공을 던지면 B가 받는다. 그리고 다시 A에게 돌려준다. 다시 B에게 던저준다.

던지는 이유는 발송을 뜻하고
던저주는 것은 잘 받았다는 응답을 뜻한다.

그래서 마지막은 던저주는 것으로 응답했다는 것으로 마무리된다.

3번의 과정이 존재하는 tcp의 과정은 신뢰할 수 있다.
왜냐하면 서로 응답을 받았는지 알 수 있기 때문이다.

이 방식의 단점은 서로의 응답을 기다려야 하기 때문에 시간이 오래 걸린다.

 

UTP는 속도 측면에서는 월등히 TCP보다 좋다.

하지만

이 방식은 상대방이 받는지 않받는지 관심 없다.
그냥 던저주고 알아서 해라는 식이다. 그래서 과거에는 게임같이 즉각적으로 변하는 프로그램에서는 UDP를 사용했다고 한다.

어떻게 하면 잘 받는지 알 수 있는 방법이 있지 않을까?
예를 들어, 누군가 공을 받으면 불이 켜진다는 식으로 만들어지면 어쩌면 UDP의 신뢰도가 증가하지 않을까?

최근에는 http3에서는 UDP에서는 사용한다고 한다.

아무튼 이 행위로
- 택배는 도중에 분실 위험이 존재한다.
- 택배는 구매한 물품 순서대로 오지 않는다.
- 배달부(택배)는 이사와 관련없다.(이들은 단지 배달일을 했을 뿐...)

3가지 일들이 해결 되었다. 이제 배달부들은 딴 짓이 불가능해졌다. 철저한 감시 시스템에서 동작하기 때문이다.

근데 마지막은 해결되지 않았다.

port

- 받는곳의 주소가 같은 곳이 여러개다.

tcp에는 이 문제점을 해결할 방법이 있다.

IP에서는 여러 어플리케이션에서 나온 데이터는 어떻게 구분이 어렵다는 문제점을 가지고 있었다.
예를 들어, 온라인 게임, 웹을 한다고 가정하자. 

2개다 다른 컴퓨터에 통신을 해야한다. 그런데 이 두개는 서로 다른 프로그램이기 때문에 동시에 동작이 어렵다.
왜냐하면 이미 IP가 일을 하고 있기 때문이다.

이러한 문제점은 TCP의 port로 해결 할 수 있다. 


게임에는 100번 port를 지정하고
웹에는 200번 port를 지정한다고 하자.

이렇게 되면 IP주소:100, IP주소:200번으로 해결 할 수 있다.
이제 게임을 하면서 음악을 들을 수 있으며 심지어 웹을 켜놓어올 수 있다.

그렇다면 현실에서는 어떨까?

우리는 아파트 주소를 생각해봐야한다. 아파트가 같은 단지라면 주소가 전부 같다.
이것을 해결할 방법은 없을 까?

바로 상세주소를 추가하면 된다. 상세 주소를 추가함으로써 거주자가 어디에 사는지 알 수 있게 되었다.

참고로 port는

총 65536개를 가지고 있으며 그중에 0번 부터 1023번까지는 잘 알려진 port번호이다.
즉, 건들면 안된다는 뜻이고, 그 이후는 자료가 있으니 찾아보자.

 

[Wiki] 대표적인 포트 목록과 개수

TCP 및 UDP의 포트 목록과 개수 가용 포트 번호는 0 ~ 65535이다. 총 65536개로 2의 16제곱에 해당하는 숫자이다. 즉 16bits로 포트 번호를 표현한다는 의미이다. 아래 정리된 내용은 위키피디아에서 가

wookiist.tistory.com

DNS

컴퓨터끼리 Ip를 통해 통신을 한다.
하지만 IP주소를 기억하기에는 너무 어렵다. 하나는 충분한데 이것을 여러개 기억할려니 골치아프다.
이럴때 사용하는 것이 DNS다.

DNS 는 Domain Name Service의 약자로 도메인에 이름을 정해주는 역할을 한다.

이 친구 덕분에 우리는 주소를 외우는게 더 간편해졌다.
비유가 조금 그럴 수 는 있지만

우편 번호와 주소로 이해하면 될까?

이것을 공부하면서 현실과의 유사점을 찾을 수 있었다.
조금 다른것도 있었지만...
이것을 만들었을 때 아마도 이런것을 염두해고 만든게 아닐까 생각이 든다.

반응형

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

데이터 이동  (0) 2021.01.05
TCP/IP 4계층  (0) 2021.01.04
네트워크 구축  (0) 2021.01.03
URI  (0) 2021.01.01
네트워크란?  (0) 2020.12.31

댓글

Designed by JB FACTORY