컴파일
하고 올바른 위치로 전송하여 다른 컴퓨터와 통신할 수 있음신뢰감
을 보장한다.흐름제어
가 가능하다.다중화
가 가능하다.TCP/IP 모델은 네트워크 통신이 일어나는 과정을 4단계로 나눈 것
OSI 4계층이라고도 부름
TCP/IP 모델 | |
---|---|
4계층 | 응용 계층(Application Layer) |
3계층 | 전송 계층(Transport Layer) |
2계층 | 인터넷 계층(Internet Layer) |
1계층 | 네트워크 액세스 계층(Network Access Layer) |
TCP는 메세지 파일들을 작은 패킷으로 나누어 인터넷을 통해 전송하는 것과 수신된 원래 메세지로 재조립하는 일을 담당
반면, 하위계층인 IP는 각 패킷에 주소부분을 처리하며 패킷들이 목적지에 정확하게 도달할 수 있게 함
사용자와 가장 가까운 계층
응용 계층 | |
---|---|
데이터 단위 | DATA/Message |
역할 | 응용프로그램 간의 데이터 송수신 |
종류 | 응용계층, 표현계층, 세션계층 |
전송 주소 | X |
전송 계층 | |
---|---|
데이터 단위 | Segment |
역할 | 통신 노드 간의 연결 제어 및 자료 송수신을 담당 |
종류 | 전송 계층 |
전송 주소 | 포트 번호 |
인터넷 계층 | |
---|---|
데이터 단위 | Packet |
역할 | 네트워크상 최종목적지까지 정확하게 연결되도록 연결성을 제공 |
종류 | 네트워크 계층 |
전송 주소 | IP |
네트워크 액세스 계층 | |
---|---|
데이터 단위 | Frame |
역할 | 물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지를 정의 |
종류 | 물리 계층, 데이터 링크 계층 |
전송 주소 | MAC 주소 |
통일
시키는 것이 좋음단순화
한 것구분 | 프로토콜 |
---|---|
구문(Syntax) | 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정 |
의미(Semantics) | 효율적이고 정확한 정보 전송을 위한 제어 정보를 규정 |
시간(Timing) | 통신 속도, 순서 제어 등을 규정 |
기능 | 역할 |
---|---|
단편화/재합성 | 데이터 블록을 나누고 합쳐서 전송 |
캡슐화 | 프로토콜에 필요한 데이터 정보를 부착 |
연결/흐름/오류 제어 | 데이터 전송에 필요한 연결/흐름/오류를 개설,조정,종결 |
순서 결정 | 데이터 단위 순서대로 수신 측에 전달 |
주소 설정 | 발생지, 목적지 등의 주소를 명기하여 데이터를 전달 |
동기화/다중화 | 상태를 일치시키는 기능 통신로를 나누어 동시에 사용할 수 있도록 하는 기능 |
추가
, 실제 구현 내용의 일부를 내부어 감추어 은닉한다는 의미제거
HTTP 구조 | 역할 |
---|---|
Start Line | 요청라인/상태라인 👉 항상 한 줄 |
Header | 헤더는 생략 가능 |
Empty Line | 공백라인 |
Message Body | 메세지 본문 👉 bite로 담을 수 있는 정보들은 가능 |
메서드 | 역할 |
---|---|
GET | 자료를 조회할 때 사용 |
POST | 자료를 등록할 때 사용 |
PUT | 자료의 수정을 요청할 때 사용 |
DELETE | 자료의 삭제를 요청할 때 사용 |
데이터 처리 기능
상태에 대한 서버의 응답
요청을 받았으며 프로세스를 계속한다
HTTP 1.0에서는 지원안됨
코드 | 설명 |
---|---|
100 | Continue - 서버가 request 헤더는 받았고, 클라이언트가 request 바디 부분을 보내고 있는 상태 |
101 | Switching Protocol - 요청자가 서버에게 Switching Protocol을 묻는 상태 |
102 | Processing - 요청자에 의해 서버가 요청을 수신하였으며 이를 처리했지만, 응답이 없는 상태 |
103 | Checkpoint - 중단된 Put과 Post 요청을 재개할 목적으로 되찾을 수 있는 request를 사용하는 상태 |
요청을 성공적으로 받았으며 인식했고 수용했다
Successful : 성공 응답
코드 | 설명 |
---|---|
200 | OK - 에러 없이 전송이 성공된 상태 |
201 | Created - request가 되었고, 새로운 자원이 만들어진 상태 주로 회원가입, 특정 업로드가 되었거나 서버에서 새로운 식별자를 생성할 때 사용하기도 함 |
202 | Accepted <br / > - 서버가 request를 전송받았으나 현재 완전하게 처리되진 않은 상태 |
203 | Non-Authoritative Informaiton - 서버가 클라이언트 요구 중 일부만 전송한 상태 |
204 | No Content - 서버가 클라이언트 요구를 처리했으나 전송할 데이터가 없는 상태 성공적으로 처리했지만 Content를 제공하지 않는 것 |
206 | Partial Content - 클라이언트의 header 범위 문제로 서버가 자원 일부만 전달받은 상태 |
redirection
요청 완료를 위해 추가 작업 조치가 필요
코드 | 설명 |
---|---|
301 | Moved Permanently - 요청된 페이지가 새 URL로 옮겨진 상태 |
302 | Found - 요청된 페이지가 일시적으로 새 URL로 옮겨진 상태 |
304 | Not Modified - 마지막 요청 이후 수정되지 않은 상태 |
305 | Use Proxy - location field에 proxy의 URL을 사용하는 상태 |
307 | Temporary Redirect 302 Foung HTTP 응답 코드와 동일한 의미가 있으며, 사용자 에이전트가 반드시 사용된 HTTP 메소드를 변경하지 말아햐 하는 점만 다른 상태 |
Client Error
요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
코드 | 설명 |
---|---|
400 | Bad Request - 요청사항에 문법적인 오류가 있어서 서버가 이해할 수 없는 상태 |
401 | Unauthorized - 해당 요청에 대한 권한이 없는 상태 - 이 코드를 사용할 때는 반드시 브라우저에 어느 인증방식을 사용할건지 보내줘야함 |
403 | Forbidden - 금지된 요청을 허가하지 않는 상태 - 단순히 권한이 없는 상태일 때 - 서버가 요청을 거부할 때 |
404 | Not Fount - 요청한 페이지를 찾을 수 없는 상태 - 요청해서 서버는 찾았으나 데이터를 찾지 못한 경우 |
405 | Method Not Allowed - request에 명시된 요청 Method가 제공되지 않은 상태 - url는 있지만 해당 method는 제공되지 않는 경우 |
406 | Not Acceptable - request에서 accept header에 not acceptable의 내용을 가진 자원을 요청한 상태 |
408 | Request Timeout - 요청 대기 시간이 지난 상태 |
410 | Gone - 요청 페이지는 더 이상 사용할 수 없는 상태 - 404와 달리 찾는 resource가 영원히 사라진 경우에 사용 |
Server Error
서버가 명백히 유효한 요청에 대해 충족을 실패
요청이 올바른 것인지에 대해서는 알 수 없음
코드 | 설명 |
---|---|
500 | Internal Server Error - 일반적인 서버 에러 메세지로 요청 사항을 이행할 수 없는 상태 |
502 | Bad Gateway - 게이트웨이나 프록시의 상태가 나쁘거나 과부하인 상태 |
504 | Gateway Timeout - 과부하 등의 이유로 게이트웨이나 프록시의 한계 대기 시간이 지난 상태 |
505 | HTTP Version Not Supported - request에서 사용한 HTTP 프로토콜을 서버가 지원하지 않는 상태 |
보안적인 이유
로 CORS를 제한
한다. 그래서 CORS 요청을 하려면 서버의 동의
가 필요
하다. 만약, 서버가 동의한다면 브라우저에서는 요청을 동의하고 동의하지 않는다면 브라우저에서 요청을 거절한다. 이러한 허락을 구하고 거절하는 매커니즘을 HTTP 헤더
를 통해서 가능
한데 이것을 CORS
라고 부른다.