클라이언트와 서버
클라이언트 서버 모델(client-server model)은 서비스의 요청자인 클라이언트와 서비스 자원의 제공자인 서버 간 작업을 분리해주는 분산 애플리케이션 구조이자, 네트워크 아키텍쳐를 의미합니다.
클라이언트는 서비스를 사용하는 사용자, 또는 사용자의 단말기를 의미합니다. 클라이언트는 서버에게 서비스를 요청합니다. 서버란 서비스를 제공하는 컴퓨터이며, 다수의 클라이언트를 위해 존재하기 때문에 일반적으로 매우 큰 용량과 성능을 가지고 있습니다.
HTTP 요청 메서드
HTTP에는 주어진 자원에 대해 어떻게 처리할지에 대한 요청 메서드들이 정의되어 있습니다.
GET
GET 메서드는 특정 자원의 표현을 요청합니다. GET을 사용하는 요청은 데이터만을 검색해야 합니다.
POST
POST 메서드는 엔티티(entity)를 특정 자원으로 전송합니다. 종종 상태를 변경하거나, 서버에 사이드 이펙트를 일으킵니다.
PUT
PUT 메서드는 현재 모든 자원들을 요청 데이터로 전부 대체합니다.
PATCH
PATCH 메서드는 자원의 부분을 변경합니다.
DELETE
DELETE 메서드는 특정 자원을 제거합니다.
SMTP
Simple Mail Transfer Protocol의 줄임말입니다. 이메일을 전송하기 위한 규약입니다. 인터넷을 통해 이메일 메시지를 보내고 받는 데 사용되는 통신 프로토콜입니다.
TCP / UDP
내용 | TCP | UDP |
헤더 크기 (Byte) | (최소) 20 | (고정) 8 |
데이터 단위 (Protocol Data Unit, PDU) |
세그먼트 (segment) | 데이터그램 (datagram) |
핸드셰이크 유무 | O | X |
데이터 전송 | O | O |
신뢰성 | O | X |
연결성 | O | X |
TCP(Transmission Control Protocol)는 응용 프로그램이 컴퓨팅 장치와 네트워크 상에서 통신할 수 있도록 하는 프로토콜을 의미합니다. 패킷을 TCP 세그먼트로 감싸서 데이터를 전송하고, IP만을 사용해서 패킷을 보낼 때 발생할 수 있는 패킷 순서의 오류와 패킷의 유실을 방지할 수 있습니다.
UDP(User Datagram Protocol)는 데이터그램 방식을 사용하는 프로토콜로, TCP에서 제공하는 핸드셰이크가 없고, TCP에 비해 헤더의 용량이 적어서 데이터 전송 속도가 더욱 빠릅니다. 하지만 TCP와는 다르게 데이터의 신뢰성과, 도착 순서를 보장하지 않습니다. 빠른 데이터 속도로 인해서 실시간 영상 스트리밍 또는 대용량 데이터를 다루는 곳에서 사용합니다.
TCP / IP 4계층
TCP / IP 4계층은 네트워크 통신을 위한 인터넷 프로토콜 스위트(Internet Protocol Suite)의 구조를 나타냅니다. 이름처럼 4가지의 계층으로 구성됩니다.
1. 링크 계층 (Link Layer)
물리적 링크에서 데이터 전송을 담당합니다. 이 계층은 물리적 주소인 MAC 주소를 사용하여 데이터를 네트워크 상의 다른 기기로 전송합니다.
2. 인터넷 계층 (Internet Layer)
데이터 패킷을 발신지에서 수신지까지 전송하는 계층입니다. IP 주소와 라우팅 기능을 사용해서 패킷이 목적지에 도달할 수 있도록 합니다.
3. 트랜스포트 계층 (Transport Layer)
TCP, UDP가 동작하는 계층입니다. TCP는 데이터를 세그먼트로 나누고, 신뢰성과 오류없는 데이터 전송, 연결성을 책임집니다. UDP는 비신뢰성과 비연결성 전송을 제공합니다.
4. 애플리케이션 계층 (Application Layer)
사용자의 네트워크 소프트웨어에 대한 엑세스를 제공합니다. HTTP, FTP, SMTP와 같은 프로토콜이 이 계층에 속하고 사용자가 네트워크 통해 데이터를 교환할 수 있도록 합니다.
DNS / DNS 캐싱
Domain Name System(도메인 네임 시스템)의 줄임말입니다. 즉, 인터넷 상의 컴퓨터, 서비스 또는 자원에 접근하기 위해 사용되는 도메인 이름을(ex.www.naver.com) IP 주소와 매핑 해주는 시스템을 의미합니다. DNS 시스템은 루트 서버, 최상위 도메인 서버(ex. .org, .net) 등 여러 단계로 이루어진 계층 구조를 가지고 있습니다.
클라이언트가 웹 브라우저에 URL을 입력하면 사용자의 ISP(Internet Service Provider)의 DNS 서버가 해당 도메인 이름을 IP 주소로 변환합니다. 만약 ISP의 DNS 서버가 해당 정보를 가지고 있지 않다면, 상위 DNS 서버에 요청하여 필요한 정보를 찾습니다.
위와 같은 과정을 거친 IP 주소는 TTL (Time To Live) 정보와 함께 클라이언트 컴퓨터의 DNS 캐시에 저장이 되고, 이후 클라이언트는 해당 도메인 네임에 매핑된 IP 주소로 더욱 빠른 인터넷 사용이 가능해집니다.
DNS 캐싱은 한 번 조회된 도메인 이름을 일정 시간(TTL) 동안 DNS 캐시에 저장하여 같은 요청이 있을 때 더 빠르게 응답할 수 있도록 합니다.
라우팅 / 라우터
라우팅은 네트워크에서 경로를 선택하는 프로세스를 의미합니다. 컴퓨터 네트워크는 노드라고 하는 시스템들과 이러한 노드를 연결하는 경로 또는 링크로 구성됩니다. 연결된 네트워크들에서 두 노드간 통신은 여러 경로를 통해 이루어질 수 있는데, 라우팅은 미리 정해진 규칙을 사용하여 최상의 경로를 선택하는 프로세스입니다.
라우터는 컴퓨팅 디바이스와 네트워크를 다른 네트워크에 연결하는 네트워킹 디바이스를 의미합니다. 라우터는 아래의 3가지 기본 기능을 수행합니다.
1. 경로 결정
라우터는 소스에서 대상으로 이동하는 데이터의 경로를 결정합니다. 지연, 용량 및 속도와 같은 네트워크 지표를 분석해서 최상의 경로를 찾으려고 시도합니다.
2. 데이터 전달
라우터는 선택한 경로에 있는 디바이스로 데이터를 전달하여 최종적으로 대상에 도달하게 합니다.
3. 로드 밸런싱
라우터가 여러 경로를 사용하여 동일한 데이터 패킷의 여러 사본을 전송할 수도 있습니다.
IPv4 / IPv6
기하급수적으로 늘어나는 사용자로 인해, 기존 IPv4를 대체할 수 있는 새로운 주소체계인 IPv6가 등장했습니다. 그러나 전환 비용, 현재 IPv4 네트워크와의 호환성 문제로 인해 점진적으로 이루어지고 있습니다.
IPv4는 32bit 주소 체계를 사용하여 약 2^32개(약, 42억)의 고유 주소를 제공할 수 있습니다. 주소는 점으로 구분된 4개의 10진수(ex. 192.168.0.1)로 표현됩니다.
IPv6는 128bit 주소 체계를 사용하여 2^128개(약, 3 X 10^38)의 고유 주소를 제공할 수 있습니다. 주소는 콜론(:)으로 구분된 8개의 16진수(ex. 2001:0db8:85a3:0000:0000:8a2e:0370:7334)로 표현됩니다.
NAT (Network Address Translation)
NAT는 로컬 네트워크에서 사용되는 사설 IP 주소(ex. 192.168.0.1)를 인터넷 상의 유효한 공인 IP 주소로 변환하는 프로세스입니다. 이 기술은 한정된 수의 공인 IP 주소를 여러 기기에서 공유할 수 있도록 하여 IP 주소 고갈 문제를 해결합니다.
또한 내부 네트워크를 숨김으로써 보안을 강화하는데 도움을 줍니다.
NAT는 주소변환, 포트 번호 변환으로 사설 IP 주소와 공인 IP 주소를 번갈아 가며 사용하는데 도움을 줍니다.
주소변환
외부 네트워크로 나가는 데이터 패킷을 내부 네트워크의 사설 IP 주소에서 공인 IP 주소로 변환합니다.
포트 번호 변환
여러 내부 기기가 동일한 공인 IP 주소를 사용할 수 있도록 각 데이터 흐름을 구별하기 위해 포트 번호를 사용합니다.
ipconfig / ping / tracert / nslookup
ipconfig는 네트워크 인터페이스의 현재 구성을 보여주고, IP 주소, 서브넷 마스크, 기본 게이트웨이 등 네트워크 설정을 수정하는 데 사용됩니다.
ping은 네트워크 상의 다른 시스템에 도달할 수 있는지를 확인하기 위해 사용됩니다. ICMP(Internet Control Message Protocol) 에코 요청을 대상 시스템에 보내고, 에코 응답을 받아 통신 성공 여부와 왕복 시간을 측정합니다.
tracert는 패킷이 소스에서 대상까지 가는 경로를 추적합니다. 네트워크 상의 라우터를 거치면서 지연 시간과 경로를 보여줍니다. 이를 통해 네트워크 문제의 위치를 파악할 수 있습니다.
nslookup은 DNS 조회를 수행하여 도메인 이름과 그에 상응하는 IP 주소를 찾는 데 사용됩니다. 또한, DNS 서버의 문제를 진단하는 데에도 유용합니다.
HTTP / HTTPS
HTTP
HyperText Transfer Protocol의 줄임말입니다. HTML과 같은 하이퍼 미디어 문서들을 전송하기 위한 어플리케이션 계층의 프로토콜입니다. HTTP는 클라이언트가 요청을 생성하기 위해 connection을 열고 응답을 받을 때 까지 기다리는 전통적인 클라이언트-서버 모델을 따릅니다.
또한 HTTP는 stateless 프로토콜입니다. 이는 서버가 클라이언트와의 요청 사이에서 어떠한 데이터도 저장하지 않는다는 것을 의미합니다.
HTTPS
HTTP에 TLS(Transport Layer Security)/SSL(Secure Socket Layer) 암호화를 적용한 프로토콜입니다. HTTP 프로토콜의 보안 버전으로, 데이터를 암호화하여 통신합니다. 이는 데이터가 전송 중에 제 3자에 의해 도청되거나 조작되는 것을 방지합니다.
또한 웹 사이트의 신뢰성을 검증하기 위해 디지털 인증서를 사용합니다. 인증서는 신뢰할 수 있는 제3자 기관(Certificate Authority, CA)에 의해 발급되고, 사용자가 방문하는 웹 사이트가 실제 운영하는 기관의 것임을 보증합니다.
전송된 데이터가 변경되거나 손상되지 않았음을 보증하기 위해 데이터 무결성을 제공합니다. 다양한 암호화 기술과 체크섬, 해시 함수를 사용하여 데이터를 검증할 수 있습니다.
기본적으로 443 포트를 사용합니다.
이더넷 (Ethernet)
이더넷은 주로 LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network)에서 데이터를 전송하는 표준 방식입니다.
특징 | 내용 |
속도 | 초기 10Mbps정도. 현재 1Gbps, 10Gbps급의 표준도 등장 |
구조 | 스타 토폴로지를 사용하여 네트워크 구성. 모든 기기가 중앙 집중식 스위치에 연결된다. |
장비 | UTP(Unshielded Twisted Pair) 케이블 (RJ-45) |
데이터 단위 | 프레임(Frame) 송신지, 수신지 주소, 오류 검사 등을 위한 정보 포함 |
통신 규약 | CSMA/CD |
전자 서명 / 전자 인증
전자 서명 (Digital Signature)
디지털 데이터에 대한 무결성과 인증을 제공하는 암호화 기반의 기술입니다. 사용자의 개인 키를 사용하여 생성되며, 데이터가 서명된 후에 변경되지 않았고, 서명한 사람이 실제 소유자임을 보증합니다.
전자 서명 과정에서는 해시 함수를 사용하여 데이터의 해시 값을 생성하고, 이 해시 값에 개인 키를 사용하여 암호화합니다.
암호화된 해시 값이 전자 서명입니다.
수신자는 발신자의 공개 키를 사용하여 서명을 검증할 수 있습니다.서명이 유효하면 데이터가 변경되지 않았으며 발신자가 실제 유자임이 확인됩니다.
전자 인증 (Electronic Authentication)
사용자의 신원을 확인하는 프로세스입니다. 로그인 정보, 생체 인식, 스마트 카드, 휴대폰 인증 코드와 같은 방법으로 개인이 그들이 주장하는 신원을 보장할 수 있게 합니다.
전자 인증은 온라인 서비스나 네트워크 자원에 안전하게 접근할 수 있도록 합니다.
참고자료
라우팅: https://aws.amazon.com/ko/what-is/routing/
HTTP: https://developer.mozilla.org/en-US/docs/Web/HTTP
IP: https://www.juniper.net/kr/ko/research-topics/what-is-ipv4-vs-ipv6.html
TCP/IP: https://reakwon.tistory.com/68, https://carnival.tistory.com/58, https://carnival.tistory.com/58, https://hahahoho5915.tistory.com/15
'Resource > 네트워크' 카테고리의 다른 글
[네트워크] CSR, SSR (0) | 2024.02.04 |
---|