인터넷 네트워크

2024. 8. 12. 19:57Web/기본지식

통신

통신 = 서로 주고 받는 것

필요한 것 = 통신 주체 + 통신 수단(방법)

 

IP(Internet Protocol)

통신 수단

- 지정 ip 주소에 데이터를 전달한다.

- 이때, 패킷(Packet) 이라는 통신 단위로 데이터를 전달한다.

 

패킷(Packet) 

통신에 필요한 기본 정보와, 전송 데이터를 갖는 단위이다.

출발지에서 전송 메세지를 패킷 단위로 잘개 쪼개 전송하게 된다.

목적지에 전달 완료 후, 재조립된다.

 

패킷이 갖는 정보

- IP (출발지, 도착지), 기타 정보

- 전송 데이터

 

통신 진행

네트워크는 수많은 노드로 연결 돼 있다.

통신할 정보를 갖는 패킷은 이 노드를 타고 출발지로부터 목적지까지 이동한다.

** 노드는 동일한 작업을 수행할 수 있는 객체의 작은 단위로, previous Node, next Node, Data, 전송() 의 동작을 갖는다.

 

IP 의 한계

1. 비연결성 - 패킷을 받을 대상(노드, 혹은 목적지)이 없거나 서비스 작동 불능 상태여도 패킷을 전송한다.

Q - 111.125.121.55 란 ip 주소가 실제 해?
A - 몰라. 니가 입력한 주소를 알지. 그게 실존하는지 어떻게 아냐?

 

2. 비신뢰성 - 중간에 패킷 사라지거나, 목적지에 패킷이 순서대로 전달되지 않을 수 있다.

[통신 시작]
출발지 - 데이터 발싸!!
중간 노드 - 우히! 전원 꺼졌다제!! 니 데이터 갖고 사라진다 이쿠우~!! 
목적지 - ... 안 오는데?

출발지 - 데이터 패킷1,2,3,4,5 발싸!!
노드 기사님 1,5,3,4,5 - 헛둘헛둘. 배달이요!!
목적지 - 2번 아직 안 왔는데요??

3. 프로그램 구분 - 같은 ip 사용하는 서버에서 통신하는 주체가 복수개 존재할 때 제대로된 처리를 할 수 없다.

마지막 노드 - 패킷 배달 왔습니다!!! 어디다 둘까요?
목적지 거주 프로그램 (x 100,000,000) - 누구한테 왔는데요?
노드 - 잠깐만요.. 프로토콜 좀 볼게요.. ? 야. 너 누구한테 가냐?
패킷 - 몰?루? 출발지, 목적지, 데이터만 있음. 목적지의 어디? 는 없음.
노드 - 아 몰라. 알아서 해요.
(내팽개쳐진 패킷들)

 

IP 스택 4계층

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

사용자와 가장 가까운 계층이다.

데이터 포맷과 프로토콜을 정의한다.

 

1. 앱에서 처리한 결과를 토대 메세지 생성

2. 라이브러리를 통해 전송 계층에 메세지 전달

 

전송 계층 (TCP, UDP) - 

TCP(Transmission Control Protocol)

데이터 전송의 신뢰성과 흐름을 제어하는 계층이다.

** tcp, udp 는 서로 다른 목적성을 띈다. 복잡해지니 여기선 tcp 위주로 학습한다.

** udp 는 [port, 체크섬 기능만 추가된 ip. 커스텀이 가능하다.] 라고 봐도 무방하다. 

 

TCP 특징

TCP는 ip 의 한계를 극복한 프로토콜이다.

- 연결지향 - 3 way handshke(가상 연결)

 1. 목적지 존재 확인 및 접속 요청. (syn)

 2. 목적지의 요청 수락과 데이터 요청. (syn + ack)

 3. 출발지의 응답_데이터 전송 (ack)

 

- 데이터 전달 보증

연결지향적 설계를 통해 데이터 전달을 보장한다. 중간에 통신이 실패하면 알 수 있다.

 

-  순서 보장

세그먼트에 넣은 정보를 토대로 패킷이 분할되어 전송되어도 순서를 보장해준다.

 

<TCP가 갖는 정보>

TCP 세그먼트

- 출발지 port

- 목적지 port

- 전송 제어

- 순서

- 검증 정보

- 전송 데이터

 

작업 진행 순서

1. TCP 정보 생성

2. TCP 세그먼트로 메세지 래핑

3. 인터넷 계층으로 래핑된 메세지 전달

 

인터넷 계층 (IP) -

1. IP 패킷 생성

2. TCP로 래핑된 메시지 패킷화(쪼개기)

3. 패킷 네트워크 인터페이스 계층으로 전달

 

네트워크 인터페이스 계층 (LAN 드라이버, 장비) - 

1. 전달 받은 패킷들에 Ehernet frame(택배로 치면 송장 같은) 붙이기

2. 네트워크로 전송

 

 

 

port

동일한 IP에서 복수개의 프로그램이 통신을하게 될 경우,

당연하게도 제대로된 처리를 할 수 없게 된다.

ip주소로만 물건을 주고 받게 되면 아래와 같은 현상이 발생하리라.

노드 - 배달이요!!
목적지 - 거따 대충 두세요.
노드 - 수고 하십셔~
목적지(아이스크림 가게) - 내껀가..? .. 왠 세계의 희귀 돌 컬렉션이래??
목적지(돌 컬렉터) - 왜 안 와? 어디갔어? 내 돌?

이러한 문제를 방지하기 위해 port 라는 개념이 도입됐다. localhost:8080 한번 씩은 다 봤겠지. 8080이 포트다.

포트를 통해 통신의 주체가 명확해진다.

 

TCP - 목적지는 123.4515.10.1 의 8282 포트네.
노드 - 예입
===전송===
노드 -  보자아.. 8282 포트.. 여기구만. 배달이요~ 수령 확인 사인 바랍니다.
목적지(돌 컬렉터:8282) : 감사합니다~ (사인싸인) 솨십셔~

 

dns (Domain Name System)

통신할 때 필요한 것은 ip주소이다.

그러나 ip 주소는 123.123.155.0.1 과 같이 구성 돼 있다.

그렇다. 알아먹기 힘들다.

 

또한, ip 주소는 여러가지 사정으로 인해 '변경' 된다. 고정된 숫자 정보로 해당 주소지를 기억할 경우, 데이터 통신은 처참하게 실패하게 된다.

 

이런 현상을 방지하기 위해 DNS가 존재한다. dns 는 쉽게 말해 전화번호부이다.

주소지명(doamin name)과 ip 주소를 세트로 묶어 주소지명으로 요청이 들어오면 해당 ip값을 알려준다.

 

도메인 이름을  통해

1. 목적지가 어디인지 명확해진다.

2. 실제 ip값이 바뀌어도 도메인명만 알면 접근할 수 있다.

ex) google.com // naver.com // yahoo.com 등 등

'Web > 기본지식' 카테고리의 다른 글

URI  (0) 2024.08.12