클라이언트와 서버가 바로옆에 근처에 있다면 케이블을 이용해서 소통을 할 수 있으나, 지역적으로 거리가 멀기 때문에 인터넷 망을 통해서 서로 메세지를 주고 받게됩니다. 인터넷을 통해 컴퓨터 간의 통신은 네트워크 프로토콜을 사용하여 이루어집니다.
🎈 IP (인터넷 프로토콜)
"IP (Internet Protocol)"은 인터넷에서 컴퓨터 간의 통신을 위한 프로토콜입니다.
IP는 패킷 스위칭 네트워크에서 데이터의 라우팅과 전달을 관리하는 역할을 합니다.
IP는 인터넷에서 데이터를 나누어 전송하기 위해 패킷(Packet)이라고 불리는 작은 단위로 데이터를 분할합니다.
이렇게 분할된 패킷은 각각에 목적지 IP 주소와 출발지 IP 주소를 부여하여 전송됩니다. 각 패킷은 독립적으로 전송되며, 도착지에서는 패킷을 수신하고 재조립하여 원래의 데이터로 복원합니다.
- 패킷 (Packet) : 패킷은 컴퓨터 네트워크에서 데이터를 전송하는 데 사용되는 작은 단위입니다. 데이터를 전송할 때, 큰 데이터를 작은 조각으로 나누어 패킷으로 분할하여 전송합니다. 각각의 패킷은 목적지 주소, 출발지 주소, 제어 정보 및 실제 데이터로 구성됩니다.
- 패킷은 네트워크를 통해 전송될 때 라우터, 스위치, 모뎀 등과 같은 네트워크 장비를 거쳐 목적지로 전송됩니다. 이러한 패킷 기반의 통신 방식은 데이터를 빠르고 효율적으로 전달할 수 있도록 도와줍니다. 패킷 단위로 데이터를 분할하여 전송하면, 네트워크의 혼잡 상태나 장애가 발생해도 일부 패킷의 손실이나 손상이 있더라도 다른 패킷들은 정상적으로 전송될 수 있습니다. 이렇게 패킷은 오류 복구 기능을 갖춘 네트워크 프로토콜인 TCP/IP에서 주로 사용됩니다.
클라이언트와 서버는 각각의 고유한 IP주소를 가지고 있는데, 패킷을 이용하여 출발지, 목적지와 메세지를 전달하면 사이의 많은 노드들을 거쳐 해당 목적지 IP와 일치하는 서버에 해당 메세지를 전달해주게 됩니다.
📋 IP프로토콜의 한계점
- 주소 고갈: IPv4 주소 고갈 문제는 가장 큰 한계점 중 하나입니다. IPv4는 32비트 주소 체계를 사용하며, 이는 약 42억 개의 주소를 나타낼 수 있습니다. 하지만 인터넷 사용량이 급증함에 따라 IPv4 주소가 고갈되었습니다. 이로 인해 주소 할당이 어려워지고, 주소 체계를 효율적으로 관리하기 위해 추가적인 방법이 필요해졌습니다.
- 보안 문제: IP는 기본적으로 데이터의 무결성, 기밀성, 인증 등과 같은 보안 기능을 제공하지 않습니다. 데이터가 IP 패킷으로 분할되어 전송되기 때문에 중간에 누군가가 패킷을 가로채거나 조작할 수 있는 가능성이 있습니다. 이로 인해 데이터의 안전성과 보안이 보장되지 않을 수 있습니다.
- 품질 제어의 부재: IP는 최선의 노력 전달 (Best Effort Delivery) 방식으로 동작합니다. 즉, 패킷의 전송 여부나 순서를 보장하지 않습니다. 따라서 네트워크 혼잡이나 오류로 인해 패킷의 일부가 손실되거나 도착 순서가 뒤섞일 수 있습니다. 이는 실시간 음성이나 영상과 같은 시간에 민감한 애플리케이션에는 문제가 될 수 있습니다.
- 확장성 제한: IP 프로토콜은 초기 설계 단계에서는 큰 규모의 네트워크를 고려하지 않았기 때문에 확장성에 제한이 있습니다. 네트워크 규모가 커지면 라우팅 테이블의 크기와 관리의 복잡성이 증가하여 성능 저하와 관리의 어려움을 초래할 수 있습니다. 전달되어야 할 메세지의 용량이 크다면 패킷을 나누어서 보내게되는데, 나누어진 패킷들은 같은 노드들로 이동한다는 보장이 없습니다.
- 다중화 문제: IP는 여러 개의 애플리케이션에서 동시에 사용할 수 있는 포트 번호를 제공합니다. 하지만 포트 번호의 개수는 제한되어 있어, 동시에 많은 애플리케이션이 사용될 경우 충돌이 발생할 수 있습니다.
🎈 TCP & UDP
- 인터넷 프로토콜 스택 : 인터넷 프로토콜 스택은 네트워크 통신을 위한 계층화된 프로토콜 집합으로, 네트워크에서 데이터를 주고받기 위한 프로토콜을 계층별로 구분하여 정의합니다. 가장 일반적인 모델은 TCP/IP 모델이며, 이 모델은 4개의 계층으로 구성됩니다. 이를 TCP/IP 4계층이라고도 부릅니다. ip만으로 주고받기에 발생하는 문제점들을 보완하기 위해 TCP, UDP를 사용합니다.
채팅프로그램으로 미국에 있는 친구한테 Hello라는 메세지를 보내고 싶다면 Socket 라이브러리를 통해서 OS 계층으로 Hello라는 메세지를 전달합니다.
TCP계층에서 TCP정보로 씌우고 IP 패킷을 생성한 후 , 네트워크 인터페이스를 통해서 전송됩니다.
IP패킷의 경우에는 출발지 IP, 목적지 IP , 기타.. 로 씌우고 전송데이터를 담아서 전송하게 됩니다.
❓ Port란?
포트(Port)는 컴퓨터 네트워크에서 특정 프로세스나 서비스를 식별하기 위해 사용되는 숫자입니다. 네트워크 통신은 IP 주소를 사용하여 이루어지는데, IP 주소는 컴퓨터나 네트워크 장치를 식별하는 역할을 합니다. 하지만 컴퓨터나 네트워크 장치 내에서 여러 개의 프로세스나 서비스가 동시에 실행될 수 있기 때문에, 이를 구분하기 위해 포트 번호가 사용됩니다.
포트 번호는 0부터 65535까지의 범위를 가집니다. 이 중 0부터 1023까지의 포트 번호는 잘 알려진 포트(Well-known Port)로, 특정 프로토콜이나 서비스에 할당되어 있습니다. 예를 들면, 웹 서비스에는 보통 80번 포트가 사용되고, FTP에는 20번과 21번 포트가 사용됩니다. 다른 포트 번호들은 동적 포트(Dynamic Port)로, 애플리케이션이나 서비스가 필요에 따라 동적으로 할당받는 포트입니다.
포트 번호는 IP 주소와 함께 사용되어 네트워크 상에서 특정 프로세스나 서비스로 데이터를 전달하는 역할을 합니다. 예를 들어, 웹 브라우저는 웹 서버에 HTTP 요청을 보낼 때 해당 웹 서버의 IP 주소와 포트 번호를 사용합니다. 웹 서버는 해당 포트 번호로 전송된 요청을 받아들여서 적절한 처리를 수행하게 됩니다.
포트는 네트워크 통신의 핵심 요소로서, 다양한 프로토콜과 서비스들이 각각 고유한 포트 번호를 사용하여 통신하고 있습니다. 이를 통해 컴퓨터 네트워크에서 데이터를 정확하게 전송하고, 정확한 프로세스나 서비스로 전달할 수 있게 됩니다.
❓ DNS란 ?
DNS는 "Domain Name System"의 약어로, 인터넷에서 도메인 이름을 IP 주소로 변환하는 시스템입니다.
인터넷에서 컴퓨터나 네트워크 장치들은 고유한 IP 주소를 가지고 있어서 서로를 식별하고 통신할 수 있습니다.
하지만 IP 주소는 숫자로 이루어져 있어서 기억하기 어렵고 사용자 친화적이지 않습니다.
DNS는 이러한 문제를 해결하기 위해 도메인 이름을 사용합니다. 도메인 이름은 사람이 이해하기 쉬운 형식으로 되어 있으며, 예를 들면 "google.com"이나 "openai.com"과 같은 형태입니다. DNS는 이러한 도메인 이름을 해당하는 IP 주소로 변환해주는 역할을 합니다.
DNS는 도메인 이름을 IP 주소로 변환하는 과정을 수행합니다. 컴퓨터나 네트워크 장치에서 도메인 이름을 사용하여 특정 웹 사이트에 접속하려고 할 때,
운영체제나 웹 브라우저는 DNS 서버에 도메인 이름을 전송하여 해당하는 IP 주소를 받아옵니다. 이후에 통신은 해당 IP 주소를 사용하여 이루어지게 됩니다.
중간 전화번호부같은 서버 dns 서버에 도메인을 등록할 수 있는데 ( 도메인은 사서 등록해야함) 구글은 200.200.200.2 클라이언트가 도메인으로 접근을 하면
해당 도메인과 일치하는 ip주소를 dns서버가 전달해줍니다. 클라이언트는 dns가 전달해 준 ip 주소로 소통할 수 있습니다.
'[HTTP]' 카테고리의 다른 글
[HTTP] HTTP 헤더 (0) | 2023.07.27 |
---|---|
[HTTP] HTTP 상태 코드 (0) | 2023.07.26 |
[HTTP] HTTP 메서드의 속성 (0) | 2023.07.15 |
[HTTP] Resource & HTTP 메서드 (0) | 2023.07.07 |
[HTTP] URI와 웹 브라우저 요청 흐름 (URL, HTTP) (0) | 2023.06.28 |