IP주소, 패킷, 포트번호 이해하기

KHS·2022년 2월 9일
0

IP주소, 패킷, 포트번호에 대해 알아보자.
일반적으로 통신을 할 때
A와 B가 있으면,

이런식으로 선을 연결하여 데이터를 흘려 보내는게 제일 효율적일 것이다.
근데 이런식의 통신은 사람들이 많아지면

이런식으로 추가로 선을 연결하여 통신을 하는데 사람이 늘어날수록 선도 늘어나게 된다 단점이 있다. 이러한 방식을 서킷 스위칭이라고 부르고 선이 늘어날수록 비용이 계속 더 들어간다는 단점이 있다.
이래서 고안한 방식이 패킷 스위칭이라는 방식이다.
이 방식은 통신할 때 선을 하나씩 늘려가는 방식이 아니라 중간에 가다가 멈춘다. 그리고 어떤 동그란게 있는데 이걸 라우터라고 하고 데이터들이 여기로 다 모여서 전송이 된다.

그리고 데이터를 받는쪽도 선이 그 앞에 있는 동그란거에 다 모이고 서로 통신을 하게 된다.
그럼 어떻게 통신을 하나?
예를들면 A는 가나 K는 다라 F는마바 라는 데이터를 B한테 보낸다.
그럼 보낼때 데이터가 어떻게 날아가냐면 데이터들을 사진과 같이 쪼갠다.

쪼개고 나서 동시에 데이터를 보낼때

이런식으로 가,다,마 데이터가 동시에 간다. 그 다음에

이렇게 나,라,바라는 데이터가 저 동그란곳으로 모인다.

그럼 저 동그란곳에서 가,다,마 ~ 이런식으로 들어오는 데이터를 받게 된다.
이렇게 데이터를 받으면

저 가,다,마 옆에 B라는 목적지를 동그라미 아래에 데이터 옆에 목적지로 붙인다.
이 라우터는 그 다음에 패킷을 포워딩 시킨다.
목적지에 가기 전에 똑같이 라우터를 거친다.

데이터가 갈 방향은 라우터가 결정한다.

그리고 데이터는 최종적으로 B로 가게 된다.
그리고 B는 이제 데이터를 받아서 재조립을 할 것이다. 왜냐면 데이터는 순서대로 날아가지 않고 가,다,마,나,라,바 이런식으로 섞여서 날라갔을 것이기 때문이다. 그럼 이 데이터를 B로 보낸다는 목적지는 아는데 누가 보냈는지 예를들면 A가 보냈는지 K가 보냈는지는 알 수 없다.
그렇기에 데이터를 보낼 때 이 가라는 데이터가 누구한테서 왔는지, 그리고 순서가 어떻게 되는지 알 수 있는 정보가 필요하다.

사진처럼 이 가라는 데이터는 A한테서 온거고 첫번 째 순서이다라는 정보를 담아야 하는건데 이 빨간색으로 색칠된 부분을 헤더라고 부른다.
이 헤더가 없으면 목적지에서 받은 데이터를 온전히 재조립을 할 수 없다.
패킷 스위칭은 이런식으로 통신을 하는데 장점은 선이 늘어날 필요가 없어 비용이 적게 든다.
이걸 패킷으로 쪼개지 하나로 다 모이면
예를들면 A가 1기가의 데이터를 보내고 B C는 간단한 데이터를 보낸다 치면
이런식으로 B와 C에는 WAIT이 걸린다. 이걸 패킷 스위칭으로 하면 1기가의 데이터를 다 쪼개서 동시에 전송이 가능해진다.
여기서 목적지가 A,B,C 이런식으로 표기를 했는데 목적지가 이렇게만 있으면 데이터가 전송되다가 충돌날 수 있다. 그렇기에 얘네들한텐 어떤 유일한 값이 필요한데 이 값은 정수값으로 0~42억9천개의 값이 있다. 이걸 IPv4 방식이라고 한다. 쉽게 말해 우리가 흔히 말하는 IP주소가 이것이다.
각각은 2의8제곱 (256)으로 이루어져 있고 0.0.0.0~255.255.255.255 이런식으로 이루어져 있는것이다.
이거보다 더 늘어난 것이 IPv6방식이고 훨씬 더 많은 경우의 수를 포함하고 있다.
IPv5가 없고 왜 바로 6로 가냐면 IPv5에서는 보통 테스트를 한다. 홀수 부분에선 보통 테스트를 하고 짝수쪽에서 보통 서비스를 한다고 한다.


그럼 이제 아까 목적지라 칭하던 A,B,C 이런곳에는 원랜 저렇게 1.10.15.7 이런식으로 IP주소가 들어가게 된다는것.

데이터가 전달되는것을 다시 정리하자면, 목적지인 10.1.5.7로 안녕이라는 데이터를 보내기로 한다. 여기서 안이라는 데이터는 A가 보냈고 첫번째 데이터라는것을 표시하는 헤더와 함께 보내는데 우선 가장 가까운 라우터를 찾아 데이터가 전송이 되고 거기서 또 목적지를 가까운 라우터로 데이터가 포워딩이 된다.

이렇게 목적지인 R까지 도착을하면 이 컴퓨터에는 여러 프로그램이 켜져 있을텐데 예를들면 카카오톡이나 어떤 온라인 게임이나 등 이런게 다 켜져있으면 데이터는 정확히 이 컴퓨터 안에서 누구한테 전달되어야 할 지 모른다. 그렇기에 필요한게 포트번호이다. 이 포트번호 또한 임의의 정수값인데 이건 컴퓨터 안에 어느 프로그램을 선택할지 결정한다. 이 포트번호는 2Byte의 크기(2의 16제곱)을 갖는데 0~65536개를 가질 수 있다.

그럼 이제 롤한테(2500번포트) 데이터를 보낼거면 10.1.5.7:2500 이런식으로 목적지를 설정해야 하는것이다.

최종적으론 이렇게 데이터가 붙어서 가는것이다.

이 글은 유튜브 메타코딩 채널의 강의 영상을 보며 공부한 내용을 기록한 게시글입니다.

profile
천천히 개발 공부하기

0개의 댓글