네트워크 구성 기술
Native-application VS Web application
Native-application
- 특정 기기에 설치해 동작하는 애플리케이션
- 장점
- 웹 앱보다 빠르다
- 기기의 리소스 접근 용이
- 인터넷 없이 사용 가능
- 웹 앱에 비해 보안 안전
- 단점
- 웹 앱보다 개발비용이 크다
- 업데이트 불편
- 앱스토어 승인 절차 복잡
Web application
- 웹 브라우저를 통해 접근하는 애플리케이션
- 장점
- 브라우저를 거쳐 설치 과정이 없다
- 업데이트 용이
- 앱에 비해 개발 용이
- 앱스토어 승인 불필요
- 단점
- 인터넷 접속 필수
- 앱에 비해 느리다
- 앱스토어를 거치지 않기 때문에 사용자 접근성이 떨어진다
- 보안 위험
TCP/IP
LAN & WAN
- LAN(Local Area Network)
- 좁은 범위에서 연결된 네트워크
- WAN(Wide Area Network)
- 여러 LAN이 모인 보다 큰 네트워크
Internetworking
- Internetwork : network 끼리 연결하는 network
- 연결 방식 : 하나의 네트워크 확장, 네트워크 간 연결
- 특징 : 일부가 통신이 끊겨도 영향을 주지 않고 개별 네트워크 관리 용이
Protocol
- 네트워크 통신 규약
TCP/IP
- Internet Protocol Suite : 인터넷을 통한 정보 교환의 통신 규약
- 대표적인 표준 Internet Protocol Suite
- TCP(Transmission Control Protocol)/IP(Internet protocol)
Layer Name Protocol Work
5 layer | Application layer | HTTP, DNS, FTP | 애플리케이션에 맞게 통신 |
4 layer | Transmission layer | TCP,UDP | Network 층과 통신 |
3 layer | Network layer | IP, ICMP,ARP,RARP | 네트워크 주소 기반으로 데이터 전송 |
2 layer | Data-Link layer | Ethernet, wifi | 물리 층과 네트워크 연결 |
1 layer | Physical layer | 물리적 계층 |
Address
- IP address
- 컴퓨터를 식별하기 위한 주소
- 컴퓨터, 휴대기기, 서버, 인터넷 라우터와 같은 네트워크 장비에 IP 주소 할당
- Private address VS Public address
- Private : LAN 내부 사용
- Public : LAN 외부 사용
- IPv4 : IP address version 4
- 4Byte 형태로 1Byte당.(dot)으로 구분
- nslookup [웹 주소]를 통해 ip 주소 확인 가능
- localhost(127.0.0.1) : 사용 중인 로컬 PC
- broadcast address(0.0.0.0, 255.255.255.255) : 로컬 네트워크와 연결된 모든 장치와 소통하는 주소
- IPv6 : IP 주소를 2^(128) 개까지 저장
- MAC address
- 네트워크 장비에 초기 할당되는 고유 시리얼
- Ethernet(Data link layer)에서 MAC 주소 사용
- ARP(Address Resolution Protocol)
- 같은 LAN 안에서 MAC 주소 파악을 위해 broadcast를 통해 패킷 전송
- 해당 IP를 가진 컴퓨터가 자신의 MAC 주소를 response
- packet
- 기기 간 통신 종류
- Circuit switching
- 통신 회선을 기술하여 데이터 교환
- 음성 전화에 사용
- 1:1 데이터 교환
- packet switching
- packet을 통하여 데이터 교환
- packet : header, payload로 구성
- 여러 회선으로 통신
- Circuit switching
- 기기 간 통신 종류
IP
- IP address 구조
- IP address 구조 : 4개의 1byte(8bit) 형태로 구성
- Subnet mask : network part 구분하기 위한 것
- network part, host part로 구성
- subnet mask : network part가 모두 1로 설정된 주소
- IP address 할당
- network 부를 고정시키고 이후 0에서 255를 제외한 번호로 할당
- 네트워크 주소는 host part가 모두 0
- 브로드캐스트 주소는 host part가 모두 1
- 한계
- 비연결성, 비신뢰성
- 패킷을 받는 대상에 문제가 생겨도 상태 파악이 불가
- 한계 극복을 위해 TCP/IP 사용
TCP
TCP/IP 5 계층 모델
Layer Name Protocol Work
5 layer | Application layer | HTTP, DNS, FTP | 애플리케이션에 맞게 통신 |
4 layer | Transmission layer | TCP,UDP | Network 층과 통신 |
3 layer | Network layer | IP, ICMP,ARP,RARP | 네트워크 주소 기반으로 데이터 전송 |
2 layer | Data-Link layer | Ethernet, wifi | 물리 층과 네트워크 연결 |
1 layer | Physical layer | 물리적 계층 |
- TCP는 통신 신뢰성을 높이고 UDP는 높은 속도 제공
TCP 3-way-handshaking
- SYN(Synchronize Sequence Number) : 송신자가 수신자에게 연결을 위한 segment 전송
- SYN/ACK(Ackknowledgement) : 수신자가 SYN을 받고 응답(ACK)을 보낸다
- ACK : 송신자가 받은 ACK를 다시 수신자에게 전송하여 연결을 확인
UDP 장점
- 실시간 전송이 중요한 앱에서 latency가 큰 TCP에 비해 약간의 손실을 감수
- 빠른 반응속도와 신뢰성을 위한 파라미터가 불필요
TCP & UDP 사용 예시
- 비디오 스트리밍은 데이터가 끊기지 않도록 해야 하기 때문에 신뢰성 손실을 감수하고 UDP 사용
- 전쟁이 나는 상황에도 3-way-handshaking이라는 데이트 송수신의 확인을 받는 TCP를 사용하여 신뢰성 보장
- dns는 tcp에서 작동하면 동작 속도가 느려지고 연결 정보가 있으면 많은 클라이언트를 수용하기 힘들기 때문에 udp를 사용
Port
- TCP/UDP에서 사용하는 애플리케이션을 특정하는 번호
- ip주소만으로 어떤 애플리케이션에 데이터 전송하는지 확인 불가
- Port 종류 well-known port 0-1023 시스템 사용 포트
Registered port 1024-49151 특정 앱이나 프로토콜에서 사용 Dynamic port 49152-65535 앱에서 임시 사용 번호 - Well-known port
- HTTP(80), HTTPS(443), POP3(110), SMTP(25), SSH(22), DNS(53), NTP(123)
- Socket
- port는 많은 데이터를 socket을 통해 처리 가능
- local IP, port, remote IP, remote port로 구성
URL
- Uniform Resource Locator : 웹에서 자원의 위치를 나타낸 정보
scheme file://, http://, https:// 프로토콜
hosts | 127.0.0.1, www.naver.com | 웹 서버 이름이나 주소 |
port | :80, :443, :300 | 사용하는 port |
url-path | /Users/username/Desktop | 웹 서버에서 지정한 자원의 경로와 파일명 |
query | q=naver | 웹 서버에 추가 요청 |
Domain name
- hosts의 IP 주소를 domain이라는 이름으로 변환
- 관리
- ICANN : 전체 도메인 관리 비영리 단체
- registry : 도메인 관리 기관(domain db 관리)
- registar : 중개 등록 업체(registry에 도메인 등록 가능)
- 종류
- gTLD(generic Top Level Domain) - .com, .net, .org, .edu, .gov, .int, .mil, .biz, .name, .info
- ccTLD(country code Top Level Domain) - .kr, .us, .jp
- .kr(한국인터넷진흥원 - registry, 가비아, 후이즈 - registar)
- DNS
- 모든 도메인 이름은 일정 기간 대여
- 도메인 이름을 IP주소로 변환하는 DNS(Domain Name System)
- DNS 작동 원리
- 도메인 주소는 오른쪽 주소부터 왼쪽으로 top level에서 다음 단계로 사용
- 서브 도메인은 www, m으로 가장 왼쪽에 존재
- 서브 도메인(호스트 이름)은 특정 부분을 나눠서 보여줘야 하는 경우로 사용
- Domain name server(zone)
- root name server - 2개 이상의 서버가 하나의 도메인 네임 담당
- TLD name server - 권한 있는 네임 서버의 주소를 알고 있다
- authorized name server - 도메인 IP 주소 및 도메인 정보 관리
- DNS lookup
- resolver에게 IP 주소 요청
- resolver 캐시 파일 찾는다
- 루트, 탑 레벨, 권한 있는 도메인 서버에 차례로 쿼리 진행
- IP 주소를 기록하고 브라우저에게 전달
- zone file
- name, record class, TTL, record type, record data
- 이 내용을 바탕으로 resolver가 IP나 쿼리를 진행
- 구성
- record : domain name, sub domain name 저장
- record class : 네트워크 타입
- TTL : Time To Live 레코드 저장 시간
- record type : 반환될 데이터 타입
- A - IPv4 / AAAA - IPv6
- CNAME - 도메인 주소
- NS - 도메인 네임 서버들의 주소
- SOA - 도메인 주 서버 정보
웹 구성 기술
Web 구성
Web
- hypertext 구성 : 다른 문서 간의 정보를 연관 지어 참조하는 문서
- 운영체제나 앱에 관계없이 동일한 결과를 출력하기 위해 HTML 등장
Client-Server Architecture(2-tier Architecture)
- Client - 리소스를 사용하는 역할
- Server - 리소스를 제공하는 역할
- Client가 Server에게 리소스를 요청하고 server가 응답하는 구조
- 3-tier architecture
- DB에 리소스를 저장하는 공간을 별도로 만든 구조
Web application Architecture
Web application
- 데스크톱 애플리케이션처럼 상호작용 가능
- 특정 기능 포함
- 콘텐츠 관리 시스템과 함께 동작
web application Architecture
- 애플리케이션의 다양한 요소들이 상호작용하는 구조
- 신뢰성, 확장성, 보안성, 견고성
Web application 요청 흐름
Work flow
- 브라우저에 url 입력
- 브라우저가 DNS 서버에 요청
- IP주소를 받아 HTTPS에 요청
- 웹 서버에 요청 도착
- 웹 서버는 저장소에 데이터 요청
- 데이터 로딩하는 과정에 비즈니스 로직 사용
- 비지니스 로직에서 데이터 처리가 되고 브라우저에 응답
- 응답을 web page에 출력
Client side VS Server side
- client side
- front-end 개발
- 브라우저 기능을 개발
- HTML, CSS, JavaScript를 사용해서 개발
- HTTP 요청
- server side
- back-end 개발
- 서버 기능을 개발
- Java, Python, JavaScript, C#, PHP, Ruby on Rails
- HTTP 응답
Web Application elements
- User Interface elements
- 화면 출력, 로그, 알림, 시스템 통계, 환경 설정 같은 기능 외적 부분
- Structure elements
- 웹 브라우저나 클라이언트, 서버, DB와 같은 기능적인 부분
- 3-Tier Architecture
- Presentation Layer - 유저와 브라우저에 집적 접촉(web server)
- Application Layer - 유저의 요청을 브라우저로 받아 처리(business logic)
- Data Access Layer - 데이터 저장소에 접근하여 데이터를 불러오거나 저장(persistence layer)
- 이외의 계층
- cross-cutting - 보안 통신 운영관리
- Third-party integrations - 제3의 API 서비스 이용
Web application implement
Single Page Application
- 페이지를 새로 불러오지 않고 현재 페이지에서 콘텐츠 최신화
- 필수 요소만 요청하고 새로 고침 방지해 유저 경험 극대화
- AJAX(Asynchronous JavaScript), XML 사용
Microservice Architecture
- 작고 가벼운 한 가지 기능에 초점을 맞춘 웹 앱
- 요소들이 상호적으로 설계되지 않고 개발 후 같은 언어를 사용할 필요 없다
- 개발 속도와 생산성 향상
- 관리가 용이
- 작은 팀 단위로 관리할 수 있음
- 코드 베이스의 규모가 작다
- 기술들을 혼합할 수 있다
- 문제가 발생할 경우 다른 전체 앱에 영향을 주지 않는다
- 확장성 용이
- 데이터를 독립적으로 관리 가능
Serverless Architecture
- 서버와 기능들을 외부 클라우드 서비스 제공자에게 위탁
- 관리할 서버가 없어 비용 절감
- 간편한 확장성
- 간단한 백엔드 코드
- 시간 단축
구현 기술
- HTTP
- 클라이언트와 서버 간 통신을 담당
- HTTP 요청 - 메서드 이름, 처리 대상
- HTTP 응답 - 상태 코드, 처리 결과
- Cookie
- 유저의 정보를 클라이언트에 보관하고 다음 접속 때 서버로 보내 서버가 식별 가능하게 한다
- Session
- 서버에 Session- Id라는 고유 아이디 할당해 유저 식별
- 세션 정보는 쿠키에서 관리, 매칭 되는 값은 서버 측에서 관리
사용자 인증
- 유저를 식별할 수 있는 ID와 password
- 웹에서의 인증은 개인정보를 바탕
- 다요소 인증(MFA) 요구
- 은행 OTP, 하드웨어 토큰
- OAuth 로그인 - 제3의 서비스에 위탁
SSR VS CSR
SSR(Sercer Side Rendering)
- Javascript가 서버에서 렌더링
- 서버에서 렌더링하고 브라우저로 보내는 방식
- 다른 경로로 이동할 때마다 서버가 작업을 반복
CSR(Client Side Rendering)
- Javascript가 클라이언트에서 렌더링
- 서버가 웹페이지의 골격인 단일 페이지를 클라이언트에게 보냄
- javaScript 파일을 클라이언트에게 보냄
- DB에 있는 데이터를 API를 사용해 가져와서 처리
- 처음 서버로 받은 파일로 경로에 따라 페이지를 다시 렌더링
차이
- SSR은 서버에서 CSR은 브라우저에서 페이지 렌더링
- 브라우저는 페이지 새로고침 하지 않고 동적으로 라우팅
SSR 사용 예시
- SEO(Search Engine Optimization) 이 우선인 경우
- 첫 화면 렌더링이 빨라야 하는 경우에 파일 용량이 적은 SSR 적합
- 사용자와 상호작용이 적은 경우
CSR 사용 예시
- SEO가 우선이 아닌 경우
- 사용자와 상호작용이 많은 경우
- 웹 앱 제작의 경우
SSR 단점
- 자원이 서버에 집중되어 유지 비용 높음
- 일부 third-party javascript library가 적용 불가
CSR 장점
- 느린 렌더링으로 사용자 경험 저하
- search engine bots와 상성 안 좋음
사례
- SSR
- 네이버 블로그(상호작용이 많지 않고, 검색엔진에 노출 유리)
- The NewYork Times(기사 노출 유리, 로딩 속도 빠름)
- CSR
- 아고다 및 예약 사이트(사용자 경험에 유리)
CORS(Cross-Origin Resource Sharing)
개념
- 처음 전송되는 리소스 도메인과 다른 도메인으로부터 리소스 요청되는 경우 cross-origin HTTP 요청에 의해 요청
특징
- 보안 상의 이유로 XMLHttpRequest와 Fetch API와 같은 origin 정책을 가진다
- simple requests
- CORS preflight를 발생시키지 않는다
- GET, HEAD, POST 중 하나의 경우
- content type
- application/x-www-form-urlencoded, multipart/form-data, text/plain
- preflighted requests
- PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH 중 하나 사용
- content type
- application/x-www-form-urlencoded, multipart/form-data, text/plain 이외의 type
- requests with credentials
- cookie에 있는 정보를 같이 보낼 것인지에 대한 요청
AJAX - SPA(Single Page Application) 구현
AJAX
- Asynchronous JavaScript And XMLHttpRequest
- JavaScript, DOM, Fetch, XMLHttpRequest, HTML 기술을 사용하는 웹 개발 기법
- 웹 페이지에 필요한 부분만 서버로부터 비동기적으로 받아 화면 구상
- 구글 검색창, 원티드의 무한 스크롤, 페이스북 메시지, 네이버 뉴스 탭
JavaScript, DOM, Fetch
- Fetch
- 페이지를 이동하지 않아도 서버로부터 데이터를 받아오는 web API
- 페이지를 작업하는 중에 응답을 동시에 기다리는 비동기적 방식
- 기존 XHR(XMLHttpRequest)와 다르게 JSON을 사용
- promise 지원 등으로 자주 사용
- DOM
- fetch를 통해 필요한 데이터만 가져와 기존 페이지에서 필요한 부분만 변경
장점
- 서버에서 HTML을 완성하지 않아도 웹페이지 구성 가능
- XHR이 표준화되어 브라우저 상관없이 사용
- 유저 중심 앱 개발 AJAX는 필요한 부분만 렌더링 가능
- 데이터를 텍스트 형태(JSON, XML)로 보내기 때문에 대역폭(한 번에 보낼 수 있는 데이터 크기)이 작아졌다
단점
- HTML 파일은 뼈대만 있고 일부분을 서버로부터 데이터를 가져오는 형태라 SEO에 불리
- 이전 상태를 기억하지 못하기 때문에 뒤로 가기를 구현하기 위해 별도 History API를 사용
HTTP
HTTP Messages
- HTTP message로 클라이언트와 서버가 데이터 교환
- Stateless : 무상태성(상태를 유지하지 않는 특성)
구조
- Start line : 요청이나 응답 상태
- HTTP header : 요청 지정, 본문을 설명하는 헤더 집합
- empty line : 헤더와 본문을 구분하는 빈 줄
- body : 요청이나 응답 관련된 데이터나 문서
- head : start line + HTTP headers / payload : body
Request
- start line
- HTTP method : 수행할 작업(GET, PUT, POST)이나 메서드(HEAD, OPTIONS)
- 요청 컨텍스트 : 요청 대상(URL이나 URI), 프로토콜, 포트, 도메인
- origin : ?와 쿼리 문자열이 붙는 절대 경로
- absolute : URL 형식
- authority : 도메인 이름과 포트 번호 URL의 authority component
- asterisk : OPTIONS와 *로 서버 전체 표현
- HTTP 버전
- Headers
- header name : value 형태
- General headers - 메시지 전체에 적용되는 헤더
- request headers - fetch를 통해 가져올 리소스나 클라이언트 정보
- Entity headers - body에 담긴 리소스 정보(콘텐츠 길이, MIME type)
- body
- GET, HEAD, DELETE, OPTIONS 등과 같이 서버에 리소스 요청하는 경우 필요 없음
- Single-resource bodies : 헤더 두 개(content-type, content-length)로 정의된 파일
- Multiple-resource bodies : 여러 파트로 구성된 본문
Responses
- status line
- 프로토콜 버전(HTTP/1.1)
- status code - 요청 결과
- status text - 상태 코드에 대한 설명
- Headers
- request와 마찬가지로 general, request, representation header로 존재
- body
- Single-resource bodies :
- 길이가 알려진 헤더 두 개로 정의된 파일
- 길이를 모르는 파일은 transfer-encoding이 chunked로 설정
- Multiple-resource bodies : 서로 다른 정보를 담고 있는 body
- Single-resource bodies :
Stateless
- HTTP로 클라이언트와 서버가 데이터를 주고받을 때 상태를 기록하지 않는다
- cookie, session, API를 통해 상태를 저장
HTTP를 이용한 클라이언트-서버 통신과 API
- HTTP라는 프로토콜을 이용해 데이터 통신
- 주요 프로토콜
- HTTP - 웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
- HTTPS - HTTP에서 보안이 강화된 프로토콜
- FTP - 파일 전송 프로토콜
- SMTP - 메일 전송 프로토콜
- SSH - 원격 접속 프로토콜
- RDP - WINDOW 원격 컴퓨터 접속 프로토콜
- WebSocket - 실시간 통신, push 지원 프로토콜
- TCP - HTTP, FTP 통신의 근원이 되는 인터넷 프로토콜
- UDP - 신뢰성이 낮지만 빠른 프로토콜
- API(Application Programming Interface)
- 서버가 클라이언트에게 리소스를 활용할 수 있도록 제공
- 리소스를 전달하기 위한 메뉴판
- 클라이언트가 요청을 할 때 사용
- GET- 조회, POST - 추가, PUT(PATCH) - 갱신, DELETE - 삭제
Chrome browser error
Error message content
Aw, Snap! | 페이지 로드 실패 |
ERR_NAME_NOT_RESOLVED | 호스트 이름 존재하지 않음 |
ERR_INTERNET_DISCONNECTED | 인터넷 연결 실패 |
ERR_CONNECTION_TIMED_OUTERR_TIMED_OUT | 페이지 연결 시간 초과 |
ERR_CONNECTION_RESET | 접속 방해 요소 발생 |
ERR_NETWORK_CHANGED | 네트워크 연결 해제 및 새로운 네트워크 연결 |
ERR_CONNECTION_REFUSED | 웹페이지에서 연결 허용 안함 |
ERR_CACHE_MISS | 이전 정보를 다시 제출할 것을 요청 받음 |
ERR_EMPTY_RESPONSE | 데이터가 전송되지 않음 |
ERR_SSL_PROTOCOL_ERROR | chrome에서 데이터 해석 불가 |
ERR_BAD_SSL_CLIENT_AUTH_CERT | 클라이언트 인증서에 오류 |
MDN - HTTP Request Method
GET - 특정 리소스의 표시 요청
HEAD - GET과 같은 요청이지만 응답 본문 요구하지 않음
POST - 특정 리소스의 ENTITY를 제출
PUT - 목적 리소스의 모든 현재 표시를 요청 payload로 변경
DELETE - 특정 리소스를 삭제
CONNECT - 목적 리소스로 인식되는 서버로 연결을 설정
OPTIONS - 목적 리소스의 통신 설정
TRACE(en-US) - 목적 리소스 경로를 따라 메시지 loop-back TEST
PATCH - 리소스의 부분만 수정
MDN - HTTP Status code
Code Text Content
100 | continue | 지금까지 상태 양호 |
101 | Switching Protocol | 클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답(프로토콜 변경 공지) |
102 | Processing | 요청을 수신하고 처리 중 |
103 | Early Hints | 서버 응답 준비 중에 user agent가 사전 로딩 시작 |
200 | OK | 요청 성공 |
201 | Created | 요청 성공, 새로운 리소스 생성 |
202 | Accepted | 요청 수신, 대응 불가 |
203 | None-Authoritative Information | 오리진 서버와 일치하지 않지만 로컬이나 서드 파티 복사본에서 모아졌음 |
204 | No Content | 요청에 대해서 보내줄 내용 없음 |
205 | Reset Content | user agent에게 요청 문서 뷰를 리셋 공지 |
206 | Partial Content | 스트림 분할 다운로드 위해 전송 |
207 | Multi-Status | 여러 상태 코드인 경우 |
208 | Multi-Status | DAV에서 사용, 복수의 내부 맴버를 반복 열거 피하기 위해서 사용 |
266 | IM Used | 서버가 GET 요청 수행하고 하나 이상의 인스턴스 조작이 적용되었음 |
300 | Multiple Choice | 요청에 대한 하나 이상의 응답 |
301 | Moved Permanently | URI 변경 |
302 | Found | URI 일시적 변경 |
303 | See Other | 다른 URI에서 GET요청 해야할 때 |
304 | Not Modified | 응답이 수정되지 않음 |
305 | Use Proxy | 응답은 반드시 proxy로 접속 |
306 | unused | 더 이상 사용되지 않는다 |
307 | Temporary Redirect | 리소스가 다른 URI에 있음 |
308 | Permanent Redirect | 리소스가 다른 URI에 영구 존재 |
400 | Bad Request | 잘못된 문법으로 요청함 |
401 | Unauthorized | 비인증 |
402 | Payment Required | 디지털 결제 요청 |
403 | Forbidden | 접근 권한을 가지지 않음 |
404 | Not Found | 리소스를 찾을 수 없음 |
405 | Method Not Allowed | 메소드 사용 불가 |
406 | Not Acceptable | 컨텐츠 찾을 수 없을 때 |
407 | Proxy Authentication Required | 프록시에 의한 인증 필요 |
408 | Request Timeout | 요청 시간 초과 |
409 | Conflict | 서버와 충돌 |
410 | Gone | 콘텐츠 영구 삭제됨 |
411 | Length Required | content-Length 헤더가 없어 요청 거절 |
412 | Precondition Failed | 헤더 조건이 서버 조건에 적절하지 않음 |
413 | Payload Too Large | 요청 entity가 서버 정의보다 클 경우 |
414 | URI Too Long | URI 길이가 길다 |
415 | Unsupported Media Type | 서버에서 지원하지 않는 미디어 포맷 |
416 | Requested Range Not Satisfiable | Range 헤더에 요청한 지정 범위 만족 불가 |
417 | Expectation Failed | Expect 요청 헤더 필드의 예상이 적당하지 않음 |
418 | I’m a teapot | 커피를 찻 주전자에 끓이는 것 거절 |
421 | Misdirected Request | 서버로 유도된 요청은 응답 생성 불가 |
422 | Unprocessable Entity | 문법 오류 |
423 | Locked | 리소스 접근 잠김 |
424 | Failed Dependency | 이전 요청도 실패해서 현재 요청 실패 |
426 | Upgrade Required | 다른 프로토콜로 업그레이드하면 처리 가능 |
428 | Precondition Required | 요청이 조건적이여야 함 |
429 | Too Many Requests | 너무 많은 요청 |
431 | Request Header Fields Too Large | 요청 헤더 필드 너무 크다 |
451 | Unavailable For Legal Reasons | 불법적 리소스 |
500 | Internal Server Error | 서버가 처리 방법 모름 |
501 | Not Implemented | 서버에서 지원 불가 |
502 | Bad Gateway | 게이트웨이로 잘못된 응답 수신 |
503 | Service Unavailable | 서버가 요청 처리 준비 안됨 |
504 | Gateway Timeout | 게이트웨이로 응답 못 받을 때 |
505 | HTTP Version Not Supported | HTTP 버전이 지원 안됨 |
506 | Variant Also Negotiates | 서버에 내부 구성 오류(컨텐츠 협상이 순환 참조로 이어짐) |
507 | Insufficient Storage | 서버에 내부 구성 오류(협상 프로세스 적절한 종료 시점이 아님) |
508 | Loop Detected | 무한 루프 |
510 | Not Extended | 추가 확장 필요 |
511 | Network Authentication Required | 네트워크 엑세스를 위해 인증 필요 |
'Backend boot camp > Session2' 카테고리의 다른 글
Relational DataBase (0) | 2022.10.03 |
---|---|
REST API (0) | 2022.10.03 |
[알고리즘] 알고리즘 (0) | 2022.09.25 |
[자료구조/알고리즘] 자료구조 (0) | 2022.09.25 |
[자료구조/알고리즘] 재귀 (0) | 2022.09.20 |