Network

김병현·2022년 2월 12일
0

Web Server

목록 보기
2/6

Internet

인터넷 프로토콜 스위트(TCP/IP)를 기반으로 하여 전 세계적으로 연결되어 있는 컴퓨터 네트워크 통신망입니다. 인터넷 = 웹(World Wide Web)이라고 착각할 수도 있지만 인터넷은 웹, 전자 메일, 파일 공유(Torrent 등), 웹캠, 동영상 스트리밍, 온라인 게임, 모바일 앱 등 다양한 서비스를 포함합니다.

Network

컴퓨터 네트워크 또는 컴퓨터망은 노드(Node. 통신 지점)들이 자원을 공유할 수 있게 하는 디지털 전기통신망입니다. 즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말합니다.

Host

Network host. 컴퓨터 네트워크에 연결된 컴퓨터나 기타 장치입니다. 네트워크 호스트는 정보 리소스, 서비스, 애플리케이션을 네트워크 사용자나 기타 노드(통신 지점)에 제공할 수 있습니다. 네트워크 호스트는 네트워크 주소가 할당된 네트워크 노드입니다.

WAN

Wide Area Network. 광범위 지역 단위로 구성된 네트워크입니다. 예로 ISP(Internet Service Provide, 인터넷 서비스 공급자(ex. SK, KT, LG)) 네트워크망이 있습니다.

LAN

Local Area Network. 사용자가 포함된 지역 네트워크입니다. 예로 학교, 회사, 가정에서 공유기나 IP 전화기 등 장비를 이용해서 서로 연결된 사용자들끼리만 접속이 가능합니다. 주로 이더넷이라는 프로토콜을 사용합니다.


HTTP

HyperText Transfer Protocol. W3 상에서 정보를 주고받을 수 있는 프로토콜입니다. 주로 HTML 문서를 주고받는 데에 쓰입니다. 주로 TCP를 사용하고 HTTP/3 부터는 UDP를 사용하며, 80번 포트를 사용합니다.

HTTPS

TLS(=SSL)를 사용해 암호화된 연결을 하는 HTTP를 HTTPS(HTTP Secure)라고 하며 웹사이트 주소를 https://로 시작됩니다. 기본 포트는 80번이 아닌 443번을 사용합니다.

쿠키(Cookie)

HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가 동일한 서버에 재요청 시 저장된 데이터를 함께 전송합니다. HTTP header에 포함되는 텍스트 데이터 파일(ex. ID, Pw)의 이름, 값 만료기간, 경로 정보가 있고 키와 값으로 구성되어 있습니다. 해당 사용자의 컴퓨터를 사용한다면 누구나 쿠키에 입력된 값을 확인할 수 있기 때문에 보안이 취약하다는 단점이 있습니다. 총 300개의 쿠키를 저장할 수 있으며 한 도메인 당 20개, 한 쿠키에 4kb(=4096byte)까지 저장 가능합니다.

세션(Session)

쿠키와 같이 서버가 사용자의 웹 브라우저에 전송하는 데이터 조각입니다. 다만 브라우저에 저장되는 쿠키와는 달리 세션은 서버에 저장되어 서버자원을 사용하기 때문에 사용자가 많을 경우 소모 자원(ex. 메모리)이 높다는 단점이 있습니다. 그러나 웹 서버에 접속한 시점으로부터 종료하는 시점까지만 사용이 가능하여 쿠키에 비해 비교적 좋은 보안성을 있습니다. 저장 데이터의 제한이 없으며 각 클라이언트 고유 세션 ID를 부여합니다.


IP

Internet Protocol Suite. 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜) 모음입니다. TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP Protocol Suite라고도 부릅니다. 공인 IP와 사설 IP가 있습니다.
목적지 시스템을 식별하는 주소 체계(장치 식별 고유 주소)

Protocol

프로토콜. 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다.

공인 IP and 사설 IP

공인 IP (Public IP) : 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(SK, LG, KT)가 제공하는 IP 주소이다. 외부 IP 및 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소. 공인 IP는 중복될 수 없으며 외부에 공개되어 있기 때문에 다른 PC로부터 접근이 가능. 보안을 위해 방화벽이나 보안 프로그램 등이 필요합니다. 서버는 공인 IP를 가져야 합니다.
ex. SKT, KT, LG에서 공급받는 IP


사설 IP (Private IP) : 일반 가정이나 회사 내부 등에 할당된 네트워크 IP 주소이며 로컬 IP, 가상 IP라고도 합니다. 보안을 위해서 사용하거나 적은 공인 IP로 많은 시스템에 인터넷을 연결할 때 사용합니다. 외부에서 웹 주소 IP 접속할 경우, 공유기의 포트 포워딩(포트 전달) 설정으로 선택적 연결 활용 가능합니다. IPv4 주소 부족으로 인해 Sub Netting된 IP이기 때문에 라우터에 의해 할당됩니다. 사용하기 위해서는 NAT Setting이 필수입니다.
ex. 공유기, 라우터

  • 사설 IP Class 대역
    A Class : 10.x.x.x
    B Class : 172.16.x.x ~ 172.31.x.x
    C Class : 192.168.x.x

Sub Netting

ISP에서 부여받은 Network ID를 라우터를 통해 더 작은 네트워크로 분할하여 사용합니다. 다만, 하나의 네트워크에 많은 Host가 있으면 네트워크 성능이 저하됩니다.
회사 환경에 따라 좀 더 작은 네트워크로 분할하여 사용시 사용

# 192.168.100.0 Network ID를 부여받음 / 24 Subnet Mask 사용

# 2개의 네트워크로 분할 (Host ID의 1bit를 더 사용)
1100 0000.1010 1000.0110 0100.0000 0000 → 192.168.100.0 / 25
1100 0000.1010 1000.0110 0100.1000 0000 → 192.168.100.128 / 25

# 4개의 네트워크로 분할 (Host ID의 2bit를 더 사용)
1100 0000.010 1000.0110 0100.1100 0000 → 192.168.100.192 / 26
1100 0000.1010 1000.0110 0100.0100 0000 → 192.168.100.64 / 26
1100 0000.1010 1000.0110 0100.0000 0000 → 192.168.100.0 / 26
1100 0000.1010 1000.0110 0100.1000 0000 → 192.168.100.128 / 26
NAT

Network Address Translation. 라우터 등의 장비를 사용하여 다수의 사설 IP를 하나의 공인 IP로 변환하는 기술입니다. 패킷의 소스 Address를 공인 IP로 변환하여 보냅니다.

패킷

Packet. 네트워크가 전달하는 데이터의 형식화된 블록(조각). 즉, 네트워크 전송의 용량 단위이며 전송될 때 서로 교환되는 실제 내용물로 조각조각 분할된 데이터에 주소와 에러 데이터 등 다양한 데이터가 기록됩니다. 패킷은 사용자가 사용할 데이터가 전송되며 이를 페이로드라고 합니다.

  • 장점 : 우회가 가능하며 전송 중 분실한 패킷에 대해서는 분실된 부분만 다시 보내면 해결됩니다. 데이터가 패킷으로 형식이 바뀔 때, 네트워크는 장문 메세지를 더 효과적이고 신뢰성 있게 전송할 수 있습니다. 인터넷뿐만 아니라 허브에서도 패킷 방식을 사용합니다.

  • 단점 : 패킷에는 고유 번호를 정해야하고 양측 네트워크가 패킷 순서를 동일하게 사용해야합니다. 이런 점 때문에 프로토콜이 등장했습니다.

패킷 교환

네트워크 통신 방식 중 하나로 현재 가장 많이 사용되는 방식입니다. 작은 블록의 패킷으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용합니다. 정보 전달의 단위인 패킷은 여러 노드를 연결하는 데이터 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어된다.

데이터그램

Datagram. 패킷 교환 네트워크와 관련된 기본 전송 단위입니다.

옥텟

Octet. 컴퓨팅에서 8개의 bit가 한데 모인 것, 8bit( = 1byte)를 의미합니다.

IPv4 and IPv6

IP의 version 4와 6을 의미합니다.

IPv4IPv6
일반적으로 사용되는 주소 방식IPv4에서의 IP 부족현상을 해결하기 위한 방법
32bit (4byte)128bit (16byte)
약 42억 9천개 정도의 IP340 Undecillion (1036)의 IP
IPv4, 서브넷마스크, 기본 게이트웨이, DNS 서버 주소 구성IPv6, 서브넷 접두사 길이, 기본 게이트웨이, DNS 서버 주소 구성
  • IP Address : 목적지를 식별
  • Subnet Mask : Network ID와 Host ID를 구별해주는 식별자
  • Gateway( = Router IP) : 네트워크를 통해 외부로 데이터를 보내거나 외부 패킷이 내부로 전송될 때는 게이트웨이를 통해서만 송수신이 가능합니다. 게이트웨이를 설정하지 않을 경우에는 외부 시스템과 통신이 불가능합니다. 때문에 중요한 서버의 경우에는 외부 시스템과의 통신을 차단하고 내부 시스템에서만 통신하기 위해 게이트웨이를 설정하지 않기도 합니다.
  • DNS IP : FQDN 이름을 IP Address로 변환합니다.
    ex. 172.217.25.3 -> www.google.co.kr

TCP and UDP

TCP : Transmission Control Protocol. IP의 핵심 프로토콜 중 하나입니다. TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 합니다. 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 됩니다. http, ftp, smtp, ssh, telnet, pop 등 대부분의 인터넷 서비스가 TCP/IP 통신을 합니다.
ex. 파일 전송

  • TCP 특징
  1. 데이터의 흐름 제어 및 혼잡 제어 이런 기능이 CPU를 사용하기 때문에 **신뢰성 있는 데이터 전송이 가능하지만 UDP보다 속도가 상대적으로 느립니다.
  2. 연결형 서비스로 가상 회선 방식을 제공합니다. 가상 회선 방식을 제공한다는 것은 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다는 의미입니다.
가상 회선 방식 : 데이터를 전송하기 전 논리적 연결이 설정되는데 이를 가상 회선이라고 합니다.
발신 가입자가 패킷 전송을 첫번째 노드에 요구하면 그 노드는 패킷헤더에 기록되어있는 착신 가입자 정보를 바탕으로 최적의 
라우팅(Routing. 데이터를 보내기 위한 경로를 배정하는 것)을 수행하고 이러한 과정이 착신 가입자가 연결되어있는 노드까지
계속 이어집니다. 각 패킷에는 가상 회선 식별 번호(VCI)가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은
전송된 순서대로 도착합니다. 가상 회선 방식은 경로를 설정할 때 한번만 수행됩니다. 정해진 시간 내 다량의 데이터를 연속으로
보낼 때는 가상 회선 방식이 적합합니다
  1. 3 way handshake 과정을 통해 연결을 설정하고 4-way handshake를 통해 해제
3 way handshake : 통신을 위한 관문(Port)을 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결이 되는 절차를
뜻합니다. 목적지와 수신지를 확실히 하여 정확한 전송을 보장하기 위해서 세션을 수립하는 과정입니다. 이런 특징을 지니는
이유는 TCP는 연결형 서비스로 높은 신뢰성을 보장하기 때문입니다.
  1. 전이중(Full-Duplex), 점대점(Point to Point) 방식
  • TCP 서버 특징
  1. 서버 소켓(= 포트)은 연결만을 담당
  2. 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용되는 서비스로 가상 회선 방식을 제공합니다.
  3. 서버와 클라이언트는 1:1 연결
  4. 스트림 전송으로 전송 데이터의 크기가 무제한
  5. 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다.
  6. Streaming 서비스에 불리하다.(손실된 경우 재전송 요청하기 때문)

UDP : User Datagram Protocol. 데이터를 데이터그램 단위로 처리하는 프로토콜입니다. 비연결형 프로토콜이기 때문에 연결을 위해 할당되는 논리적인 경로가 없습니다. 그렇게 때문에 각각의 패킷은 다른 경로로 전송되고 독립적인 관계를 지니게 되고 독립적으로 처리하게 됩니다. 이렇게 단순한 방식 때문에 지연시간이 짧지만 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나 중복되거나 심지어는 통보없이 누락시키기도 합니다. UDP는 일반적으로 오류의 검사와 수정이 필요없을 때 사용합니다.
ex. 실시간 스트리밍 서비스

  • UDP 특징
  1. 비연결형 서비스로 데이터그램 방식을 제공
  2. 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않음
  3. UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출
  • UDP 서버 특징
  1. UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없음
  2. 소켓 대신 IP를 기반으로 데이터를 전송
  3. 서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결될 수 있음
  4. 데이터그램(메세지) 단위로 전송되며 그 크기는 65,535byte로, 크기가 초과하면 나눠서 보냄
  5. 흐름제어가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없음
흐름제어(Flow Control)와 혼잡제어(Congestion Control) : 흐름제어는 데이터를 발신하는 곳과 수신하는 곳의
데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것입니다. 예를 들어 발신하는 곳에서 감당이 안되게
데이터를 빠르게 많이 보내면 수신자에서 문제가 발생하기 때문입니다. 혼잡제어는 네트워크 내의 패킷 수가 넘치게 증가하지
않도록 방지하는 것입니다. 만약 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막습니다.
  1. 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용

IP 분류

IP는 Network ID와 Host ID로 구성되어있습니다. 대역 분류는 A, B, C, D, E Class로 분류하는 Class 방식과 CIDR 방식이 있습니다.

  • 0번 대 Network : Network를 식별할 때 사용

  • 127번 대 Network : Loop Back IP. 자신의 컴퓨터를 의미하며 랜카드까지 전송되었다가 다시 자신의 시스템으로 반환됩니다. 개발목적, 테스트 목적으로 사용하는 IP, Server를 구동하기위한 IP 입니다.

  • Network ID : 네트워크를 의미합니다(ex. 각각의 회사와 같이 그룹별). IP Address와 Subnet Mask를 AND 연산하여 Network ID를 식별합니다. 우편번호와 주소와 같은 역할을 담당합니다.

Network ID 부여 순서

Network ID는 IANA(글로벌 IP를 관리하는 단체)에서 부여 -> KRNIC(한국의 인터닉. 한국인터넷진흥원)
-> ISP(Internet Service Provide) -> 개인 또는 기업에서 사용
  • Host ID : Host는 네트워크에 존재하는 라우터, 프린터, 스위치, 컴퓨터와 같은 장치를 뜻합니다. 관리자가 임의로 설정이 가능하며 Host 수는 계산 후 항상 2자리를 제외 처리(-2)를 해주어야 합니다. 층, 동, 호와 같이 나머지 상세 주소 역할을 담당합니다.
Host의 모든 bit가 0인 경우, Network ID 자체를 식별할 때 사용되는 식별자
Host의 모든 bit가 1인 경우, BroadCast 데이터를 전송할 때 사용

데이터 전송방식

  • Unicast -1 : 1 : 1 통신방법
  • Multicast - 1 : 그룹(D class) 통신방법
  • Broadcast — 1 : 모두 (라우터 장비까지)
Router : 다른 Network를 연결해주는 장비
라우터를 통해 컴퓨터들의 Network가 연결. 개인용은 공유기, 기업용은 라우터라 칭함
  1. Class (IP를 10진법으로 표기)
Class용도Network 수
Host 수
구성
A ClassIP 식별에 사용Network : 27 - 2 = 126
Host : 224 - 2 = 16,777,214
Network ID.Host ID.Host ID.Host ID
B ClassIP 식별에 사용Network : 214 - 2 = 16,384
Host : 216 - 2 = 65,534
Network ID.Network ID.Host ID.Host ID
C ClassIP 식별에 사용Network : 221 - 2 = 2,097,152
Host : 28 - 2 = 254
Network ID.Network ID.Network ID.Host ID
D Class멀티캐스트(Multicast) 방식 데이터 전송시 사용
(멀티캐스트 주소 : 224.0.0.0 ~ 239.255.255.255)
공란공란
E Class예약, 군사적, 비상용 목적의 IP 대역공란공란
# Network ID 식별하기
# IP Address와 Subent Mask AND 연산
# IP Address와 Subnet Mask를 2진수로 변환하여 AND 연산 후 10진수로 다시 재변환하여 표기
# Class는 옥텟 단위로 처리

-------------------

IP Address : 192.168.219.104 (10진법) -> 1100 0000.1010 1000.1101 1011.0110 1000 (2진법)
Subnet Mask : 255.255.255.0 (10진법) -> 1111 1111.1111 1111.1111 1111.0000 0000 (2진법)

AND 연산 결과 : 192.168.219.0 (10진법) -> 1100 0000.1010 1000.1101 1011.0000 0000 (2진법)

# Network ID : 192.168.219.0 -> 192.168.219(Network ID) + 0(Host ID)
# 결론적으로 Subnet Mask의 2진수 중 1로 구성된 단위는 Network ID, 0으로 구성된 단위는 Host ID로 식별
  1. CIDR
    Class 방식을 사용한 IP 배포가 IP 낭비가 심하여 CIDR 방식이 도입되었습니다.
# CIDR은 2진법으로 IP를 표기
# CIDR은 bit 단위로 처리하여 IP를 더욱 세분화하여 더 많은 IP를 배포 가능

-------------------

IP Address : 192.168.100.100 (10진법)
Subnet Mask : 20 (20bit가 1로 처리)

IP Address : 1100 0000.1010 1000.0110 0100.0110 0100 (2진법)
Subnet Mask : 1111 1111.1111 1111.1111 0000.0000 0000 (2진법)

AND 연산 결과 : 1100 0000.1010 1000.0110 0000.0000 0000 (2진법)

# 결과
Network ID : 192.168.96.0
BroadCast IP : 192.168.127.255 -> 1100 0000.1010 1000.0111 1111.1111 1111
# AND 연산 결과값 중 끝에 0으로 처리된 bit부터 1로 변환

IP 부여 가능 범위(Network ID  ~ BraodCast IP) : 192.168.96.2 ~ 192.168.127.255
# 첫번째 자리는 Gateway IP, 끝자리는 BroadCast IP이기 때문에 범위에서 제외
Host 수 : 8,190 ((2^13) - 2)
# AND 연산 결과에서 0으로 처리된 bit 수
Gateway IP : 192.168.96.1

-------------------

IP Address : 192.168.223.224
Subnet Mask : 22

IP Address : 1100 0000.1010 1000.1101 1111.1110 0000
Subent Mask : 1111 1111.1111 1111.1111 1100.0000 0000

AND 연산 결과 : 1100 0000.1010 1000.1101 1100.0000 0000

# 결과
Network ID : 192.168.220.0
BroadCast IP : 192.168.223.255 -> 1100 0000.1010 1000.1101 1111.1111 1111

IP 부여 가능 범위 : 192.168.220.2 ~ 192.168.223.254
Host 수 : 1,022 ((2^10) - 2)
Gateway IP : 192.168.220.1

www (=W3)

World Wide Web. 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간. 간단히 웹(web)이라 부릅니다.

네임서버

DNS(Domain Name Server)는 대표적으로 IP 주소와 도메인 주소를 연결해주는 역할을 합니다.
인터넷 주소창에 도메인을 입력할 때 도메인 등록 시 지정된 네임서버를 통해 해당 도메인과 연결된 IP 주소를 확인하여 연결하게 됩니다. 따라서 도메인 등록시에 네임서버를 지정하고, 해당 네임서버에 연결 설정을 해야 정상 이용이 가능합니다.

DHCP

DHCP(Dynamic Host Configuration Protocol)는 동적 호스트 설정 프로토콜 이라는 의미이며 IP 주소와 게이트웨이 또는 네임서버의 주소의 정보를 자동으로 할당해주는 프로토콜을 의미합니다. 일반적인 가정집이나 사무실에서 가장 많이 사용되는 네트워크 사용 방법입니다.


TLS ( = SSL )

인터넷에서의 정보를 암호화해서 송수신하는 프로토콜. 정식 명칭은 TLS이지만 SSL이라는 용어가 많이 사용됩니다. TLS를 적용한 FTP가 FTPS이며, 적용한 HTTP가 HTTPS입니다. 인터넷 통신에서 보안을 확보하기 위해 통신 당사자간 서로가 신뢰할 수 있는 자임을 확인할 수 있어야 하며, 통신 내용이 제 3자에게 도청되는 것을 방지해야 합니다. 이를 위해 전자 서명이 포함된 인증서를 사용하며 도청 방지를 위해 통신 내용을 암호화합니다.

작동 방식

  1. 클라이언트 → 서버 ClientHello 메세지(클라이언트의 TLS버전, 서버 도메인, 세션 식별자, 암호설정 등 정보 포함) 전송

  2. 서버 → 클라이언트 ServerHello 메세지(서버에서 사용하기로 선택한 TLS버전, 세션 식별자, 암호 설정 등 정보 포함) 전송

  3. 서버 → 클라이언트 Cerificate 메세지(신뢰할 수 있는 서버임을 증명하는 인증서 포함) 전송 후 ServerHelloDone 메세지 전송

  4. 클라이언트 측에서 인증서의 유효기간, 해당 서버에서 발급된 인증서 진위 여부 등 확인

  5. 클라이언트 측에서 서버 인증서에 포함된 공개 키를 사용해 암호화한 임의의 pre-master secret 생성 후, ClientKeyExchange 메세지를 포함해 서버에 전송

  6. 서버는 전송받은 정보를 복호화(암호 해독) 후 pre-master secret을 알아낸 뒤, 이 정보를 사용해 master secret을 생성하여 세션 키를 생성(서버 ↔ 클라이언트 간의 통신을 암호화하는데 사용)

  7. 서버 ↔ 클라이언트 각자 가지고 있는 대칭키 암호(세션 키)를 사용하여 통신 가능. 우선 서로에게 ChangeCipherSpec 메세지를 전송하여 모든 통신 내뇬은 세션 키를 사용해 암호화해 보낼 것을 고지 후, Finished 메세지를 전송에 각자의 핸드셰이킹 과정이 끝났음을 알림
  • 대칭키 암호(Symmetric-key alogorithm) : 암호화와 복호화에 같은 열쇠를 사용하는 암호를 말합니다. 암복호화 속도가 빠르지만 상대방도 같은 열쇠를 가지고 있어야 하므로 이를 전달하는 과정에서 약점이 노출됩니다.
  • 비대칭키 암호(Public-key cryptography) : 암호화(공개키 사용)와 복호화(비밀키 사용)에 사용하는 키가 서로 다른 암호화 방식입니다. 상대방에게 열쇠를 쉽게 전달할 수 있지만 암복호화 속도가 느립니다.
  1. 서버 ↔ 클라이언트 보안 통신 구성

SSH

보안 셸(Secure Shell). 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜입니다. 기존 원격 접속을 위해 사용하던 텔넷은 암호화가 되지 않아 보안성이 낮은 위험 때문에 암호화 기능을 추가한 프로토콜이 SSH입니다. 기본 포트는 22번입니다.


HTTP 상태 코드

  • 1xx (Information/조건부 응답) : 요청을 받았으며 프로세스를 계속 진행합니다.
  • 2xx (Success/성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
  • 3xx (Redirection/리다이렉션 완료) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
  • 4xx (Client Error/요청 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
  • 5xx (Server Error/서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.

1XX : Information responses
상태 코드가 '1'로 시작하는 경우는 서버가 요청을 받았으며, 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미입니다. 해당 코드는 HTTP 1.0에서 지원되지 않습니다.

  • 100 Continue

진행 중임을 의미하는 응답코드입니다. 현재까지의 진행상태에 문제가 없으며, 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려줍니다.

  • 101 Switching Protocol

101은 클라이언트에 의해 보낸 업그레이드 요청 헤더에 대한 응답으로 보내집니다.

이 응답 코드는 클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답에 들어가며, 서버에서 프로토콜을 변경할 것임을 알려줍니다. 해당 코드는 Websocket 프로토콜 전환 시에 사용됩니다.

  • 102 Processing(WebDAV)

이 응답 코드는 서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로 된 응답을 알려줄 수 없음을 알려줍니다.


2XX : Successful responses

  • 200 OK

요청이 성공적으로 되었습니다. 정보는 요청에 따른 응답으로 반환됩니다.

  • 201 Created

요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라옵니다.

  • 202 Accepted

요청을 수신하였지만, 그에 응하여 행동할 수 없습니다. 이 응답은 요청 처리에 대한 결과를 이후에 HTTP로 비동기 응답을 보내는 것에 대해서 명확하게 명시하지 않습니다. 이것은 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌습니다.

  • 203 Non-Authoritative Information

이 응답 코드는 돌려받은 메타 정보 세트가 오리진 서버의 것과 일치하지 않지만 로컬이나 서드 파티 복사본에서 모아졌음을 의미합니다. 이러한 조건에서는 이 응답이 아니라 200 OK 응답을 반드시 우선됩니다.

  • 204 No Content

요청에 대해서 보내줄 수 있는 콘텐츠가 없지만, 헤더는 의미있을 수 있습니다. 사용자-에이전트는 리소스가 캐시된 헤더를 새로운 것으로 업데이트 할 수 있습니다.

  • 205 Reset Content

이 응답 코드는 요청을 완수한 이후에 사용자 에이전트에게 이 요청을 보낸 문서 뷰를 리셋하라고 알려줍니다.

  • 206 Partial Content

이 응답 코드는 클라이언트에서 복수의 스트림을 분할 다운로드를 하고자 범위 헤더를 전송했기 때문에 사용됩니다. 클라이언트가 이어받기를 시도하면 웹서버가 이에 대한 응답코드로 '206 Partial Content'와 함께 Range 헤더에 명시된 데이터의 부분(byte)부터 전송을 시작합니다.

  • 207 Multi-Status

멀티-상태 응답은 여러 리소스가 여러 상태 코드인 상황이 적절한 경우에 해당되는 정보를 전달합니다. 해당 코드는 WebDAV(Web Distributed Authoring and Vesioning)에 사용됩니다.

  • 208 Already Reported

Prostat(property와 status의 합성어) 응답 속성으로 동일 컬렉션으로 바인드된 복수의 내부 멤버를 반복적으로 열거하는 것을 피하기 위해 사용됩니다. 해당 코드는 WebDAV(Web Distributed Authoring and Vesioning)에 사용됩니다.

  • 226 IM Used ( HTTP Delta encoding )

서버가 GET 요청에 대한 리소스의 의무를 다 했고, 그리고 응답이 하나 또는 그 이상의 인스턴스 조작이 현재 인스턴스에 적용이 되었음을 알려줍니다.


3XX : Redirection messages

  • 300 Multiple Choice

요청에 대해서 하나 이상의 응답이 가능합니다. 사용자 에언트 또는 사용자는 그중에 하나를 반드시 선택해야 합니다. 응답 중 하나를 선택하는 방법에 대한 표준화 된 방법은 존재하지 않습니다.

  • 301 Moved Permanently

이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미합니다. 새로운 URI가 응답에서 아마도 주어질 수 있습니다.

  • 302 Found

이 응답 코드는 요청한 리소스의 URI가 일시적으로 변경되었음을 의미합니다. 새롭게 변경된 URI는 나중에 만들어질 수 있습니다. 그러므로, 클라이언트는 향후의 요청도 반드시 동일한 URI로 해야합니다.

  • 303 See Other

클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답입니다.

  • 304 Not Modified

이것은 캐시를 목적으로 사용됩니다. 이것은 클라이언트에게 응답이 수정되지 않았음을 알려주며, 그러므로 클라이언트는 계속해서 응답의 캐시된 버전을 사용할 수 있습니다.

  • 305 Use Proxy

이전 버전의 HTTP 기술 사양에서 정의되었으며, 요청한 응답은 반드시 프록시를 통해서 접속해야 하는 것을 알려줍니다. 이것은 프록시의 in-band설정에 대한 보안상의 걱정으로 인하여 사라져가고 있습니다.

  • 306 Unused

이 응답 코드는 더이상 사용되지 않으며, 현재는 추후 사용을 위해 예약되어 있습니다. 이것은 HTTP 1.1 기술사양 이전 버전에서 사용되었습니다.

  • 307 Temporary Redirect

클라이언트가 요청한 리소스가 다른 URI에 있으며, 이전 요청과 동일한 메소드를 사용하여 요청해야 할 때, 서버가 클라이언트에 이 응답을 직접 보냅니다. 이것은 302 Found HTTP 응답 코드와 동일한 의미를 가지고 있으며, 사용자 에이전트가 반드시 사용된 HTTP 메소드를 변경하지 말아야 하는 점만 다릅니다. 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 합니다.

  • 308 Permanent Redirect

이것은 리소스가 이제 HTTP 응답 헤더의 Location:에 명시된 영구히 다른 URI에 위치하고 있음을 의미합니다. 이것은 301 Moved Permanently HTTP 응답 코드와 동일한 의미를 가지고 있으며, 사용자 에이전트가 반드시 HTTP 메소드를 변경하지 말아야 하는 점만 다릅니다. 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 합니다.


4XX : Client error responses
400 Bad Request

이 응답은 잘못된 문법으로 인하여 서버가 요청하여 이해할 수 없음을 의미합니다.

  • 401 Unauthorized

비록 HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미합니다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.

  • 402 Payment Required

이 응답 코드는 나중에 사용될 것을 대비해 예약되었습니다. 첫 목표로는 디지털 결제 시스템에 사용하기 위하여 만들어졌지만 지금 사용되고 있지는 않습니다.

  • 403 Forbidden

클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를 들어, 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.

  • 404 Not Found

서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수 있습니다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있습니다. 이 응답 코드는 웹에서 반복적으로 발생하기 때문에 가장 유명할지도 모릅니다.

  • 405 Method Not Allowed

요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다. 예를 들어, 어떤 API에서 리소스를 삭제하는 것을 금지할 수 있습니다. 필수적인 메소드인 GET과 HEAD는 제거될 수 없으며, 이 에러 코드를 리턴할 수 없습니다.

  • 406 Not Acceptable

이 응답은 서버가 서버 주도 콘텐츠 협상을 수행한 후, 사용자 에이전트에서 정해준 규격에 따른 어떠한 콘텐츠도 찾지 않았을 때, 웹서버가 보냅니다.

  • 407 Proxy Authentication Required

이것은 401과 비슷하지만 프록시에 의해 완료된 인증이 필요합니다.

  • 408 Request Timeout

이 응답은 요청을 한 지 시간이 오래된 연결에 일부 서버가 전송하며, 어떤 때에는 이전에 클라이언트로부터 어떠한 요청이 없었다고 하더라도 보내지기도 합니다. 이것은 서버가 사용되지 않는 연결을 끊고 싶어하는 것을 의미합니다. 이 응답은 특정 몇몇 브라우저에서 빈번하게 보이는데 Chrome, Firefox 27+, 또는 IE 9와 같은 웹서핑 속도를 올리기 위해 HTTP 사전 연결 메카니즘을 사용하는 브라우저들이 해당됩니다. 또한 일부 서버는 이 메시지를 보내지 않고 연결을 끊어버리기도 합니다.

  • 409 Conflict

이 응답은 요청이 현재 서버의 상태와 충돌될 때 보냅니다.

  • 410 Gone

이 응답은 요청한 콘텐츠가 서버에서 영구적으로 삭제되었으며, 전달해 줄 수 있는 주소 역시 존재하지 않을 때 보냅니다. 클라이언트가 그들의 캐시와 리소스에 대한 링크를 지우기를 기대합니다. HTTP 기술 사양은 이 상태 코드가 '일시적인, 홍보용 서비스'에 사용되기를 기대합니다. API는 알려진 리소스가 이 상태 코드와 함께 삭제되었다고 강요해서는 안된다.

  • 411 Length Required

서버에서 필요로 하는 Content-Length 헤더 필드가 정의되지 않은 요청이 들어왔기 때문에 서버가 요청을 거절합니다.

  • 412 Precondition Failed

클라이언트의 헤더에 있는 전제조건은 서버의 전제조건에 적절하지 않습니다.

  • 413 Payload Too Large

요청 엔티티는 서버에서 정의한 한계보다 큽니다. 서버는 연결을 끊거나 혹은 Retry-After 헤더 필드로 돌려보낼 것이다.

  • 414 URI Too Long

클라이언트가 요청한 URI는 서버에서 처리하지 않기로 한 길이보다 깁니다.

  • 415 Unsupported Media Type

요청한 미디어 포맷은 서버에서 지원하지 않습니다. 서버는 해당 요청을 거절할 것입니다.

  • 416 Requested Range Not Satisfiable

Range 헤더 필드에 요청한 지정 범위를 만족시킬 수 없습니다. 범위가 타겟 URI 데이터의 크기를 벗어났을 가능성이 있습니다.

  • 417 Expectation Failed

이 응답 코드는 Expect 요청 헤더 필드로 요청한 예상이 서버에서는 적당하지 않음을 알려줍니다.

  • 418 I'm a teapot

서버는 커피를 찻 주전자에 끓이는 것을 거절합니다.

  • 421 Misdirected Request

서버로 유도된 요청은 응답을 생성할 수 없습니다. 이것은 서버에서 요청 URI와 연결된 스킴과 권한을 구성하여 응답을 생성할 수 없을 때 보내집니다.

  • 422 Unprocessable Entity (WebDAV)

요청은 잘 만들어졌지만, 문법 오류로 인하여 따를 수 없습니다.

  • 423 Locked (WebDAV)

리소스는 접근하는 것이 잠겨있습니다.

  • 424 Failed Dependency (WebDAV)

이전 요청이 실패하였기 때문에 지금의 요청도 실패하였습니다.

  • 426 Upgrade Required

서버는 지금의 프로토콜을 사용하여 요청을 처리하는 것을 거절하였지만, 클라이언트가 다른 프로토콜로 업그레이드를 하면 처리를 할지도 모릅니다. 서버는 Upgrade 헤더와 필요로 하는 프로토콜을 알려주기 위해 426 응답에 보냅니다.

  • 428 Precondition Required

오리진 서버는 요청이 조건적이어야 합니다. 클라이언트가 리소스를 GET해서, 수정하고, 그리고 PUT으로 서버에 돌려놓는 동안 서드파티가 서버의 상태를 수정하여 발생하는 충돌인 '업데이트 상실'을 예방하기 위한 목적입니다.

  • 429 Too Many Requests

사용자가 지정된 시간에 너무 많은 요청을 보냈습니다("rate limiting").

  • 431 Request Header Fields Too Large

요청한 헤더 필드가 너무 크기 때문에 서버는 요청을 처리하지 않을 것입니다. 요청은 크기를 줄인 다음에 다시 전송해야 합니다.

  • 451 Unavailable For Legal Reasons

사용자가 요청한 것은 정부에 의해 검열된 웹페이지와 같은 불법적인 리소스입니다.


5XX : Server error reponses

  • 500 Internal Server Error

웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 더 구체적으로 설명할 수 없습니다.

  • 501 Not Implemented

서버가 요청을 이행하는 데 필요한 기능을 지원하지 않음을 나타냅니다.

  • 502 Bad Gateway

서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생합니다.

  • 503 Service Unavailable

서버가 요청을 처리할 준비가 되지 않았습니다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버입니다. 이 응답과 함께 문제를 설명하는 사용자 친화적인 페이지가 전송되어야 한다는 점에 유의하십시오. 이 응답은 임시 조건에 사용되어야 하며, Retry-After: HTTP 헤더는 가능하면 서비스를 복구하기 전 예상 시간을 포함해야 합니다. 웹마스터는 또한 이러한 일시적인 조건 응답을 캐시하지 않아야 하므로 이 응답과 함께 전송되는 캐싱 관련 헤더에 대해서도 주의해야 합니다.

  • 504 Gateway Timeout

웹페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미합니다. 이 오류 응답은 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을 경우 주어집니다. 이 오류는 대게 인터넷상의 서버 간의 네트워크 오류이거나 실제 서버의 문제입니다. 컴퓨터, 장치 또는 인터넷 연결에 문제가 아닐 수 있습니다.

  • 505 HTTP Version Not Supported

서버에서 지원되지 않는 HTTP 버전을 클라이언트가 요청하였습니다. 대부분의 웹 브라우저는 웹 서버가 1.x 버전의 HTTP 프로토콜을 지원한다고 가정합니다. 실제로 1.0 이하의 매우 오래된 버전은 요즘 거의 사용되지 않습니다. 특히 최신 버전의 프로토콜보다 보안 및 성능이 좋지 않기 때문입니다. 따라서 웹 브라우저에서 이 오류가 표시되는 경우 웹 서버 소프트웨어에서 지원하는 HTTP 버전을 확인해 보아야 합니다.

  • 506 Variant Also Negotiates

서버에 내부 구성 오류가 있는 경우 발생합니다. 요청을 위한 투명한 콘텐츠 협상이 순환 참조로 이어집니다.

  • 507 Insufficient Storage

선택한 가변 리소스는 투명한 서버에 내부 구성 요류가 있는 경우 발생합니다. 콘텐츠 협상에 참여하도록 구성되므로 협상 과정에서 적절한 끝점이 아닙니다.

  • 508 Loop Detected (WebDAV)

서버가 요청을 처리하는 동안 무한 루프를 감지한 경우 발생합니다.

  • 510 Not Extended

서버가 요청을 이행하려면 요청에 대한 추가 확장이 필요합니다.

  • 511 Network Authentication Required

511 상태 코드는 클라이언트가 네트워크 액세스를 얻기 위해 인증할 필요가 있음을 나타냅니다.

profile
Without haste, but without rest.

0개의 댓글