본문 바로가기
Network

[NetWork] 인터넷 네트워크

by jinjin98 2023. 2. 4.

̱ 인터넷 네트워크

 

웹이나 HTTP 통신은 인터넷 네트워크에서 동작합니다. 

 

 ̱인터넷 통신

 

 

인터넷 상에서 서로 통신하는 두 개의 컴퓨터는 어떻게 통신할까요?

(요청을 하는 컴퓨터를 클라이언트, 요청을 받아 응답을 하는 컴퓨터를 서버라고 합니다.)

 

 

 

클라이언트와 서버가 바로 옆에 붙어있다면, 케이블로 연결해서 요청과 응답을 주고 받을 수 있습니다.

 

 

 

그런데 통신하는 상대 컴퓨터가 멀리 있다면 인터넷망을 사용해서 요청과 응답을 주고 받아야합니다.

이 때는 수 많은 노드를 거쳐 요청 메시지가 서버에 도착합니다. 이렇게 복잡한 과정을 거쳐서 어떻게 상대

컴퓨터에 찾아갈 수 있는지 알기 위해선 IP(인터넷 프로토콜) 에 대해 이해해야 합니다.

 

 IP 프로토콜

 

 

인터넷망에서 멀리 떨어져있는 두 컴퓨터가 서로 통신하려면 IP 주소를 가지고 있어야 합니다.

IP 프로토콜은 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터를 전달합니다.

 

 

출발지 IP, 도착지 IP 를 적는 등 패킷의 규칙에 맞게 패킷을 만들고

 

 

 

상대 컴퓨터에 전송하면 인터넷망을 통해 거쳐가는 노드들도 IP 프로토콜을 따르고 있어 

출발지 IP 와, 도착지 IP 를 확인해 서로 던져주다 최종적으로 목적지인 상대 컴퓨터에 도달하게 됩니다.

 

 

응답할 때도 요청과 같은 과정이 이루어집니다.

 

IP 프로토콜의 한계

 

 

1. 비연결성

상대 컴퓨터가 꺼져잇어 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송합니다.

 

 


2. 비신뢰성

중간에 패킷이 사라지거나 패킷이 순서대로 도착하지 않을 수 있습니다.


3. 프로그램 구분

같은 IP 를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이여서 어떤 프로그램과 통신해야할 지 

구분하지 못할 수 있습니다.

 

이런 문제들로 IP 프로토콜만으로는 인터넷 통신을 원활하게 할 수 없습니다.

 

 TCP/ UDP

 

 

TCP/ IP 4계층은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에

따라 네 개의 추상화 게층으로 구성됩니다. 이 계층들은 특정 게층이 변경되었을 때 다른 계층이 영향을 받지

않도록 설계되었습니다.

 

어플리케이션 게층

어플리케이션 게층 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용된느 프로토콜 게층이며 웹 서비스,

이메일 등 서비스를 실질적으로 사람들에게 제공하는 층입니다.

 

전송 계층

전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성,

흐름 제어를 제공할 수 있으며 어플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 합니다.

대표적으로 TCP 와 UDP 가 있습니다. TCP 는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서

연결을 하여 신뢰성을 구축해서 수신 여부를 확인하며 가상회서 패킷 교환 방식을 사용합니다. UDP 는 순서를

보장하지 않고 수신 여부를 확인하지 않으며 단수히 데이터만 주는 데이터그램 패킷 교환 방식을 사용합니다.

 

인터넷 계층

인터넷 계층은 컴퓨터로부터 받은 패킷을 IP 주소러 지정된 목적지로 전송하기 위해 사용되는 계층입니다.

IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할  상대의 주소를 지정하여 데이터를 전달합니다. 상대방이 제대로

받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있습니다.

 

네트워크 인터페이스 계층

네트워크 인터페이스 계층은 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 컴퓨터 간에 신호를

주고받는 규칙을 정하는 계층입니다.

 


프로토콜 계층을 사용해서 상대방 컴퓨터에 Hello 라는 메시지를 전송하는 과정입니다.

1. 전송할 Hello, world! 라는 메시지를 생성합니다. 어플리케이션 계층에서 사용하는 데이터 단위를 메시지라고 합니다.

2. 생성한 메시지를 SOCKET 라이브러리를 통해 OS 에 전달합니다.

3. 전달받은 메시지에 TCP 정보를 씌웁니다. 전송 계층에서 사용하는 데이터 단위를 세그먼트라고 합니다.

세그먼트를 인터넷 계층에 전달합니다.

4. 전달받은 세그먼트에 IP 정보를 씌웁니다. 인터넷 계층에서 사용하는 데이터 단위를 패킷이라고 합니다.

패킷을 네트워크 인터페이스 게층에 전달합니다.

5. 전달받은 패킷에 컴퓨터 식별자라고 할 수 있는 맥 주소를 씌웁니다. 네트워크 인터페이스 계층, 정확히 말하자면

네트워크 인터페이스 계층안에 데이터 링크 계층에서 사용하는 데이터 단위를 프레임이라고 합니다.

프레임은 LAN 카드를 통해 전송됩니다.

 

 

TCP 세그먼트에는 전송 제어, 순서, 검증 정보가 들어있어 이전에 확인했던 IP 프로토콜의 한계와 문제점을

해결할 수 있습니다.

 

TCP 특징


전송 제어 프로토콜(Transmission Control Protocol)

 

 

1. 연결지향 - TCP 3 way handshake (가상 연결)

상대방 컴퓨터와 먼저 연결을 한 후에 통신을 시작하기 때문에 통신하려는 상대방의 컴퓨터가

꺼져있거나 연결이 되지 않는 경우에는 데이터를 전송하지 않습니다.

연결을 해제할 때는 4-way handshake 과정이 발생합니다.

 

 

2. 데이터 전달 보증

요청을 받는 컴퓨터인 서버가 데이터를 잘 받았다면 응답을 해주기 때문에

전송한 데이터가 누락된다면 송신자가 인지할 수 있습니다.

 

 

3. 순서 보장

전송하는 데이터의 순서를 보장합니다.

 

앞서 말한 특징들 덕분에 신뢰할 수 있는 프로토콜이므로 현재는 대부분 TCP 프로토콜을 사용합니다.

 

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

 

UDP 는 TCP 와 같이 전송 계층에 있는 프로토콜입니다.

UDP 는 기능이 거의 없기 때문에 하얀 도화지에 비유할 수 있습니다. 간단하게 TCP 의 기능과 반대된다고 할 수 있습니다.

연결지향 - TCP 3 way handshake X

데이터 전달 보증 X

순서 보장 X

IP 프로토콜과 거의 같다고 볼 수 있고 PORT 번호과 체크섬 기능 정도만 추가되었다고 할 수 있습니다.

데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠릅니다.

 

 PORT

 

 

상대방 컴퓨터 서버의 IP 주소에 도착하여 해당 서버를 만났을때 이 서버에서 돌아가고 있는 애플리케이션이

2개 이상이라면 이 중 어떤 애플리케이션에 데이터를 전송해야 할까요? 

이 때 어플리케이션을 구분하기 위해 존재하는게 PORT 번호입니다.

 

 

 

TCP 세그먼트 정보를 보면 출발지 PORT 와 목적지 PORT 가 있는걸 확인할 수 있습니다.

 

 

클라이언트가 데이터를 전송할 때 출발지 IP, 도착지 IP 와 출발지 PORT, 목적지 PORT 도 같이 보내기 때문에

서버에서도 어떤 컴퓨터에서 어떤 PORT 로부터 요청이 왔는지 파악할 수 있어 요청한 지점에 정확히 응답할 수

있는 것입니다.

 

포트 번호는 0 ~ 65535 할당할 수 있습니다. 하지만 0 ~ 1023 는 잘 알려진 포트 번호로, 사용하지 않는 것이

좋습니다.


• FTP - 20, 21

• TELNET - 23

• HTTP - 80

• HTTPS - 443

 

̱ DNS

 

 


IP 주소는 숫자로 구성되어 있어 기억하기가 어렵습니다.

 

 

 

또한 IP 주소는 변경될 수도 있습니다. 만약 IP 주소가 변경되고 변경된 IP 를 알지 못한다면

해당 컴퓨터에 요청을 보낼 수가 없습니다.

 

 

그래서 존재하는게 DNS(Domain Name System) 서버입니다. 

각 도메인에 해당하는 IP 주소가 한 쌍으로 저장되어 클라이언트에서 웹 브라우저에 도메인 명을 입력하면

DNS 서버가 해당 도메인에 맞는 IP 주소를 반환해 그 IP 주소에 요청을 보내게 됩니다.

숫자로 되어있는 전화번호를 기억하기 쉬운 이름으로 저장하는 전화번호와 비슷하다고 볼 수 있습니다.

'Network' 카테고리의 다른 글

[NetWork] HTTP 상태 코드  (0) 2023.02.10
[NetWork] HTTP 메서드  (0) 2023.02.09
[NetWork] HTTP(Hyper Text Transfer Protocol)  (1) 2023.02.05
[NetWork] URI 와 웹 브라우저 요청 흐름  (0) 2023.02.04
[Network] IP 주소  (0) 2022.10.25

댓글