HTTP (HyperText Transfer Protocol)는 클라이언트와 서버 간 통신 규약을 나타내는 것임

그 중 Status Code는 서버가 (클라이언트로부터 받은) 요청에 대한 처리 결과를 나타내기 위한 숫자로, 응답 메세지의 상태 라인에 포함됨

// 서버의 응답 메세지 예시 //

HTTP/1.1 200 OK   // -> 200이라는 상태 코드를 통해 요청 처리 성공을 전달
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!DOCTYPE html... (here comes the 29769 bytes of the requested web page

 

HTTP Status Code는 IANA라는 인터넷 할당 번호 관리 기관에서 "HTTP Status Code Registry"라는 이름으로 관리

(https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)

 

1NN - 정보 제공

클라이언트의 요청을 받았으며, 요청 처리를 진행 중
(1xx 계열의 응답은 HTTP/1.1 클라이언트에게만 보낼 수 있으며 응답은 바디 없이 상태 라인, 헤더(생략 가능), 빈 줄로 종료)

100 Continue 계속 진행
(클라이언트는 요청 헤더에 ‘Expect: 100-continue’를 보내고 서버는 이를 처리할 수 있으면 이 코드로 응답)
101 Switching Protocols 프로토콜을 전환해야함
(프로토콜을 HTTP 1.1에서 업그레이드할 때 Upgrade 응답 헤더에 표시. 현재는 HTTP 1.1이 최신이므로 사용할 일이 없음)
102 Processing (WebDAV) 처리 중이다.
(서버가 처리하는 데 오랜 시간이 예상되어 클라이언트에서 타임 아웃이 발생하지 않도록 이 응답 코드를 보냄)

 

 

2NN - 요청 처리 성공

클라이언트가 요청한 동작을 수신하여 성공적으로 처리함

200 OK 서버가 요청을 성공적으로 처리
201 Created 요청이 처리되어서 새로운 리소스가 생성
(응답 헤더 Location에 새로운 리소스의 절대 URI를 기록)
202 Accepted 요청은 접수하였지만, 처리가 완료되지 않음
(응답 헤더의 Location, Retry-After를 참고하여 클라이언트는 다시 요청을 보냄)
203 Non-Authoritative
Information
응답 헤더가 오리지널 서버로부터 제공된 것이 아님
(프록시 서버가 응답 헤더에 주석을 덧붙인 경우가 하나의 예)
204 No Content 처리를 성공하였지만, 클라이언트에게 돌려줄 콘텐츠가 없음
(응답에는 헤더만 있고 바디는 없음. DELETE 요청에 대한 응답에 많이 사용됨)
205 Reset Content 처리를 성공하였고 화면을 리셋
(예를 들어 브라우저가 입력 폼을 보여 주고 있을 때 이 응답 코드를 받으면 브라우저는 모든 입력 항목을 리셋하고 재입력할 수 있는 상태가 됨)
206 Partial Content 콘텐츠의 일부만을 보냄
(응답 헤더의 Content-Range에 응답 콘텐츠의 범위를 기록. 예를 들어 1,500 바이트의 리소스 중에서 처음의 500바이트만을 보낼 때 사용할 수 있음.)
207 Multi-Status (WebDAV) 처리 결과의 스테이터스가 여러 개임
(207 응답은 성공을 뜻하지만, 각각의 처리 결과가 성공인지는 바디를 봐야 알 수 있음)

 

 

3NN - 리다이렉션 (Redirection)

클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함

300 Multiple Choices 선택 항목이 여러 개가 있음
(지정한 URI에 대해서 콘텐츠 협상을 수행한 결과, 서버에서 콘텐츠를 결정하지 못하고 클라이언트에게 복수 개의 링크를 응답할 때 사용)
301 Moved Permanently 지정한 리소스가 새로운 URI로 이동함
(이동할 곳의 새로운 URI는 응답 헤더 Location에 기록)
302 Found 요청한 리소스를 다른 URI에서 찾음
(요청한 URI가 없으므로 클라이언트 메소드를 그대로 유지한 채, 응답 헤더 Location에 표시된 다른 URI로 요청을 재송신할 필요가 있음.)
* 302의 의미를 정확하게 개선해서 307을 정의하였으므로 이 응답 코드의 사용은 권장 X
303 See Other 다른 위치로 요청해야함
(요청에 대한 처리 결과를 응답 헤더 Location에 표시된 URI에서 GET으로 취득할 수 있음. 브라우저의 폼 요청을 POST로 처리하고, 그 결과 화면으로 리다이렉트시킬 때 자주 사용하는 응답 코드임)
304 Not Modified 마지막 요청 이후 요청한 페이지는 수정되지 않음
(If-Modified-Since와 같은 조건부 GET 요청일 때 지정한 리소스가 갱신되지 않았음을 알려줌. 이 응답 코드에는 바디가 없음)
305 Use Proxy 지정한 리소스에 액세스하려면 프록시를 통해야 함
(응답 헤더 Location에 프록시의 URI를 기록)
306 (현재 사용 X) 현재 사용하지 않는 상태코드임
307 Temporary Redirect 임시로 리다이렉션 요청이 필요함
(요청한 URI가 없으므로 클라이언트 메소드를 그대로 유지한 채 응답 헤더 Location에 표시된 다른 URI로 요청을 재송신해야함. 클라이언트는 향후 요청 시 원래 위치를 계속 사용해야 함.)
* 302의 의미를 정확하게 재정의해서 HTTP/1.1의 307 응답으로 추가

 

 

4NN - 클라이언트 오류 

클라이언트의 요청에 오류가 있음 (자주 사용되는 상태 코드 : 400, 401, 403, 404)

400 Bad Request 요청의 구문이 잘못됨
(클라이언트가 모르는 4xx 계열 응답 코드가 반환된 경우에도 클라이언트는 400과 동일하게 처리하도록 규정)
401 Unauthorized 지정한 리소스에 대한 액세스 권한이 없음
(응답 헤더 WWW-Authenticate에 필요한 인증 방식을 지정)
402 Payment Required 지정한 리소스를 액세스하기 위해서는 결제가 필요함
* 이 응답 코드는 실제로는 사용되지 않음
403 Forbidden 지정한 리소스에 대한 액세스가 금지됨
(401 인증 처리 이외의 사유로 리소스에 대한 액세스가 금지되었음을 의미.
리소스의 존재 자체를 은폐하고 싶은 경우도 404 응답 코드를 사용할 수 있음.)
404 Not Found 지정한 리소스를 찾을 수 없음
405 Method
Not Allowed
요청한 URI가 지정한 메소드를 지원하지 않음
(응답 헤더 Allow에 이 URI가 지원하는 메소드 목록을 기록함)
406 Not Acceptable 클라이언트가 Accept-* 헤더에 지정한 항목에 관해 처리할 수 없음
(응답 바디에는 300 응답처럼 서버가 수용 가능한 다른 선택지 리스트가 기록됨)
407 Proxy
Authentication

Required
클라이언트는 프록시 서버에 인증이 필요함
(프록시 서버의 응답 헤더 Proxy-Authenticate에 필요한 인증 방식을 지정)
408 Request Timeout 요청을 기다리다 서버에서 타임아웃함
409 Conflict 서버가 요청을 수행하는 중에 충돌이 발생함
(예를 들어 사용자명을 new_name으로 변경하려 하였지만, 서버에 이미 new_name이라는 사용자가 존재하는 경우. 응답 헤더 Location에는 충돌이 발생한 리소스의 URI를 기록함)
410 Gone 지정한 리소스가 이전에는 존재하였지만, 현재는 존재하지 않음
(예를 들어 기간이 한정된 프로모션 사이트가 사라진 경우 사용할 수 있음)
411 Length Required 요청 헤더에 Content-Length를 지정해야 함
412 Precondition Failed If-Match와 같은 조건부 요청에서 지정한 사전 조건이 서버와 맞지 않음
413 Request Entity
Too Large
요청 메시지가 너무 큼
(서버는 접속을 끊음)
414 Request-URI
Too Large
요청 URI가 너무 긺
415 Unsupported
Media Type
클라이언트가 지정한 미디어 타입을 서버가 지원하지 않음
(예를 들어 서버가 지원하는 이미지는 JPG, PNG뿐인데 클라이언트가 GIF 형식의 이미지를 요청하는 경우)
416 Range
Not Satisfiable
클라이언트가 지정한 리소스의 범위가 서버의 리소스 사이즈와 맞지 않음
417 Expectation Failed 클라이언트가 지정한 Expect 헤더를 서버가 이해할 수 없음
422 Unprocessable
Entity
(WebDAV) 클라이언트가 송신한 XML이 구문은 맞지만, 의미상 오류가 있음
423 Locked (WebDAV) 지정한 리소스는 잠겨있음
424 Failed Dependency (WebDAV) 다른 작업의 실패로 인해 본 요청도 실패함
426 Upgraded Required 클라이언트의 프로토콜의 업그레이드가 필요함
(응답에 Upgrade 헤더를 보내 필요한 프로토콜을 알려 줌)
428 Precondition
Required
If-Match와 같은 사전조건을 지정하는 헤더가 필요함.
(If-Match 헤더가 있지만, 맞지 않는 경우는 412 응답을 보냄)
429 Too Many Requests 클라이언트가 주어진 시간 동안 너무 많은 요청을 보냄
(요청의 속도를 제한할 때 사용. 응답에 Retry-After 헤더를 보내 얼마나 기다릴지를 알려 줄 수 있음)
431 Request Header
Fields Too Large
헤더의 길이가 너무 큼
(헤더의 전체 크기가 크거나 또는 하나의 헤더가 매우 큰 경우. 보통 Referer URL이 길거나 쿠키 항목이 많은 경우)
444 Connection Closed Without Response (NGINX) 응답을 보내지 않고 연결을 종료함
(보통 악의적인 요청에 대해서 사용하며, 클라이언트에서는 응답을 볼 수 없고 Nginx 로그에 나타남)
451 Unavailable For
Legal Reasons
법적으로 문제가 있는 리소스를 요청

 

5NN - 서버 오류 

서버에 오류가 발생하여 요청 처리에 실패

500 Internal Server Error 서버에 오류 발생
(클라이언트가 모르는 5xx 계열의 응답 코드가 반환된 경우에도 클라이언트는 500과 동일하게 처리하도록 규정)
501 Not Implemented 요청한 URI의 메소드에 대해 서버가 구현하고 있지 않음
502 Bad Gateway 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받음
503 Service Unavailable 현재 서버에서 서비스를 제공할 수 없음
(보통은 서버의 과부하나 서비스 점검 등 일시적인 상태)
504 Gateway Timeou 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 응답을 기다리다 타임아웃이 발생
505 HTTP Version
Not Supported
클라이언트가 요청에 사용한 HTTP 버전을 서버가 지원하지 않음
507 Insufficient Storage (WebDAV) 서버에 저장 공간 부족으로 처리에 실패

 

 

참고 자료 : https://hongong.hanbit.co.kr/http-%EC%83%81%ED%83%9C-%EC%BD%94%EB%93%9C-%ED%91%9C-1xx-5xx-%EC%A0%84%EC%B2%B4-%EC%9A%94%EC%95%BD-%EC%A0%95%EB%A6%AC/ 

'Computer Science > 네트워크' 카테고리의 다른 글

GET과 POST를 비교해보자  (0) 2024.02.04
HTTP에 대해 알아보자  (1) 2024.02.04
TCP의 3 Way HandShake  (0) 2024.02.04
TCP와 UDP를 비교해보자  (1) 2024.02.04
OSI 7계층과 TCP/IP 4계층을 비교해보자  (0) 2024.02.04

GET method

  • 리소스 조회를 요청하기 위한 목적
  • body가 없음
  • 조건에 따른 리소스를 요청하기 위해 Query / Path parameter를 사용
    • Query Parameter : URL 끝에 '?'를 기준으로 조건명과 구체적인 값이 추가
      (ex. www.어쩌고.com/orders/3 )
    • Path Parameter : URL 끝에 '/'를 기준으로 추가
      (ex. www.저쩌고.com?name=kkk&size=3 )
  • 캐싱 가능 (HTTP 헤더 내 cache-control 헤더를 통해 캐싱 옵션 수정 가능)
  • 요청의 길이 제한이 있음 (브라우저별로 상이함)
  • 브라우저 히스토리에 기록이 남음
  • 요청을 계속해서 보내도 응답이 달라지지 않음 (get만 보낸다는 전제하에)

 

POST method

  • 요청 리소스를 처리하기 위한 목적 (ex. 데이터 등록)
  • 리소스에 관한 정보를 담는 body가 존재
  • 캐싱 불가능
  • 요청의 길이 제한이 없음
  • 브라우저 히스토리에 기록이 남지 않음
  • 요청을 계속해서 보낸다면 응답이 달라질 수 있음 (새로 등록하거나 수정하기 때문)

'Computer Science > 네트워크' 카테고리의 다른 글

HTTP Status Code에 대해 알아보자  (1) 2024.02.09
HTTP에 대해 알아보자  (1) 2024.02.04
TCP의 3 Way HandShake  (0) 2024.02.04
TCP와 UDP를 비교해보자  (1) 2024.02.04
OSI 7계층과 TCP/IP 4계층을 비교해보자  (0) 2024.02.04

HTTP란?

Hyper Text Transper Protocol의 약자로, 텍스트 기반 통신 규약

OSI 7계층 중 응용 계층 (Application Layer)의 웹 서비스 통신에서 사용되는 프로토콜

 

HTTP의 구성

  • 요청(Request) : 클라이언트 -> 서버

  • 응답(Response) : 서버 -> 클라이언트

 

HTTP Methods (요청 시 사용됨)

GET 데이터 조회
POST 요청 데이터 처리 (ex. 등록)
PUT 데이터 대체 (이전 데이터가 없다면 생성)
PATCH 데이터 일부 변경
DELETE 데이터 삭제
HEAD GET과 동일하나, 서버에서 Body를 제외하고 반환
OPTIONS 웹 서버에서 지원하는 메소드 정보 파악
CONNECT Proxy 기능 요청
TRACE 루프백 메세지 호출을 위해 테스트용으로 사용

 

Status Code

1XX 정보 제공 현재 클라이언트 요청까지 성공하였으니 계속 진행해도 된다는 의미의 임시 정보 제공
(HTTP/1.1부터 지원)
2XX 요청 성공 클라이언트의 요청이 서버에서 성공적으로 처리됨
3XX 리다이렉션 완전한 처리를 위해 추가적인 처리가 필요하다는 의미
(보통 요청의 주소가 이동되었으니 그 주소로 다시 이동하라는 의미)
4XX 클라이언트 오류 클라이언트가 잘못된 요청을 한 경우
5XX 서버 오류 서버 내부 문제로 인하여 전달받은 요청 처리에 실패한 경우

 

HTTP/1.0

  • 한 연결당 하나의 요청을 처리하도록 설계됨
  • 위 방식으로 인하여 서버로부터 파일을 가져올때마다 TCP 3 Way Handshake 과정을 거쳐야 함. 이로 인해 RTT가 증가하는 단점을 가짐 (RTT : 패킷이 목적지에 도달한 후 다시 출발지로 돌아오기까지 걸리는 시간)
  • RTT 증가를 줄이기 위하여 이미지 스플리팅 / 코드압축 / 이미지 Base64 인코딩 등의 방법을 사용함

 

HTTP/1.1

  • HTTP/1.0에서처럼 매번 TCP 연결을 하지 않고, 최초 TCP 초기화를 한 후 'keep-alive'라는 옵션으로 여러번 파일 송수신이 가능하게됨
  • HTTP/1.0에도 keep-alive 옵션이 있었으나 보편화되지 않았고, 1.1으로와서 기본 옵션으로 설정됨
  • HTTP/1.0의 헤더에는 쿠키 등 많은 메타데이터가 들어 있고 압축되지 않아 크기가 컸던 '무거운 헤더 구조'의 문제가 존재

 

HTTP/2.0

  • 이전 버전과 비교하여 줄어든 지연 시간, 빨라진 응답 시간, 멀티플렉싱 / 헤더 압축 / 서버 푸시 / 요청의 우선순위 처리 등을 지원
    • 멀티플렉싱 : 여러 개의 스트림을 사용하여 송수신하는 것 (스트림 - 연결을 통한 데이터 흐름)
    • 헤더 압축 : 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식
    • 서버 푸시 : 클라이언트 요청없이 서버가 데이터를 바로 푸시할 수 있는 것

 

HTTPS

  • HTTP/2.0부터는 HTTPS를 사용하여 동작함
  • HTTPS는 응용 계층과 전송 계층 사이에 SSL/TLS 계층을 추가하여 데이터를 암호화하여 통신할 수 있게 함
  • SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하고, 보안 세션 생성 시, 인증 메커니즘 / 키 교환 암호화 알고리즘 / 해싱 알고리즘 사용
  • HTTPS를 사용한다면 SEO(검색엔진 최적화)에 관하여도 이점이 되어, 더 많은 사용자들에게 노출 가능

 

HTTP/3 - 현재 사용되는 프로토콜

  • TCP 상에서 동작하던 이전 버전들과 달리, QUIC 계층 위에서 동작
  • TCP가 아닌 UDP 기반으로 동작
  • 멀티 플렉싱을 지원하고 UDP 기반으로 초기 연결에 관하여 지연 시간이 줄어든다는 장점

 

TCP는 TCP/IP 4계층 중 전송 계층에서 사용되는 프로토콜 중 하나임

또 다른 프로토콜인 UDP와 달리 신뢰성을 보장하는 데이터 전송이 특징인데, 이러한 클라이언트와 서버 간의 신뢰성 확보에 사용되는 방법이 "3 Way HandShake"임

3 Way HandShake를 통해 신뢰성을 확보한 후 데이터 전송이 끝나면 또 다시 4 Way HandShake를 통해 클라이언트와 서버 간의 연결을 해제함

 

3 Way HandShake

 

SYN Synchronization , 연결 요청 플래그
ACK Ackknowledgement , 응답 플래그
ISN Initial Sequence Numbers , 초기 네트워크 연결할 때 할당된 32비트 고유 시퀀스 번호

 

1. SYN 단계 

  • 클라이언트가 서버에게 '클라이언트의 ISN'을 포함하여 SYN 세그먼트를 전송

2. SYN + ACK 단계

  • 서버가 클라이언트로부터 SYN을 수신한 후, '서버의 ISN'과 '승인번호'(클라이언트의 ISN에 +1 한 값)를 포함하여  SYN + ACK 세그먼트를 전송

3. ACK 단계

  • SYN + ACK 단계를 통해, 서버의 ISN 값을 받게된 클라이언트가 '승인번호'(서버의 ISN에 +1한 값)를 포함하여 서버에게 ACK 세그먼트를 전송 

 

4 Way HandShake (TCP 연결 해제 과정)

 

FIN Finish , 연결 해제 요청 플래그
ACK Ackknowledgement , 응답 플래그

 

1. FIN 전송 [클라이언트 -> 서버]

  • 클라이언트가 서버에게 연결 해제를 위해 FIN으로 설정된 요청 세그먼트 전송 후 서버의 응답을 기다림

2. ACK 전송 [서버 -> 클라이언트]

  • 서버가 클라이언트에게 ACK이라는 응답 세그먼트 전송

3. FIN 전송 [서버 -> 클라이언트]

  • 이전 단계에서 응답 세그멘트 전송 후 일정시간 이후에, 클라이언트에게 FIN 세그먼트 전송

4. ACK 전송 [클라이언트 -> 서버]

  • 이전 단계에서 서버로부터 FIN 세그먼트를 수신한 클라이언트는 일정시간 대기한 후, 서버로 ACK 세그먼트를 전송
    (지연되는 패킷이 있을 수 있기 때문에 잠시 대기하는 것)
  • 클라이언트로부터 ACK을 수신한 서버는 CLOSED 상태가 되고, 클라이언트는 또 다시 일정시간동안 대기 후 CLOSED 상태가 되어 연결이 해제됨

 

 

TCP와 UDP 모두 TCP/IP 4계층 중 '전송 계층'에서 사용되는 프로토콜

 

TCP 

  • 패킷 사이의 순서를 보장
  • 연결지향 프로토콜을 사용하여 연결 및 수신 여부 확인
  • 3-way Handshake를 통해 신뢰성 확보 및 연결 후 데이터 전송 시작
  • 4-way Handshake를 통해 연결 해제
  • UDP보다 속도가 느림
  • '가상회선 패킷 교환 방식' 사용
"가상회선 패킷 교환 방식"이란?
- 각 패킷에 가상회선 식별자가 포함
- 모든 패킷을 전송하면 가상회선이 해제
- 결과적으로 패킷들은 전송된 순서대로 도착하게 됨
  • 전이중(Full-Duplex), 점대점(Point-to-Point) 방식 사용
- 전이중 (Full Duplex) : 전송이 양방향으로 동시에 일어날 수 있음
- 점대점 (Point to Point) : 연결의 종단점이 정확히 2개임 (1:1 통신만 지원)
  • 흐름제어와 혼잡제어를 제공
- 흐름제어 : 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
- 혼잡제어 : 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
  • 속도보단 신뢰성이 보장되는 데이터 전송 시 권장 (ex. 파일 전송)

 

UDP 

  • 패킷 사이의 순서를 보장하지 않음
  • 수신 여부를 확인하지 않음
  • 별도의 신뢰성 확보 및 연결 과정 없음
  • TCP보다 속도가 빠름
  • '데이터그램 패킷 교환 방식' 사용
"데이터그램 패킷 교환 방식"이란?
- 패킷이 독립적으로 이동하며 최적의 경로로 이동
- 즉, 하나의 데이터에서 여러 패킷이 분할되면, 
  서로 다른 경로로 이동하여 전송되므로 도착 순서가 전송 순서와 다를 수 있음

 

  • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만을 검출
  • 1:1 , 1:N , N:N 의 통신이 모두 가능
  • 신뢰성보단 속도와 연속성이 더 우선인 데이터 전송 시 권장 (ex. 실시간 스트리밍)

1. 'OSI 7계층'과 'TCP/IP 4계층'은 무엇인가?

인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합

다른 말로 인터넷을 통해 한 컴퓨터에서 다른 컴퓨터로 정보를 주고받는 과정

 

OSI 7계층 - 네트워크 통신이 일어나는 과정을 7개로 나누어 설명

TCP/IP 4계층 - 네트워크 통신이 일어나는 과정을 4개로 나누어 설명

 

2. 'OSI 7계층 (OSI 7 layer)'에 대해 자세히 알아보자

(1) 각 단계의 핵심 역할

물리 계층 (Physical Layer 데이터를 전기 신호로 바꾸어 케이블로 보냄
데이터 링크 계층 (Data-Link Layer) 들어온 정보의 오류와 흐름을 관리
네트워크 계층 (Network Layer) 라우팅 기능 (정보를 목적지까지 보내는 경로 중 가장 빠르고 안전한 경로로 전달)
전송 계층 (Transport Layer) 정확한 통신을 담당 (오류 탐지 및 복구 등)
세션 계층 (Session Layer) 통신 세션을 구성 (인증, 허가, 세션 복구 등)
표현 계층 (Presentation Layer)  데이터를 어떻게 표현할지 정함 (번역,압축,암호화 등)
응용 계층 (Application Layer 응용 프로그램이 사용되며, 실질적으로 사용자에게 서비스를 제공

 

 

(2) 각 단계별 구체적인 역할

 

물리 계층 (Physical Layer)

  • 최하위 계층
  • 데이터 링크 계층으로부터 받은 데이터를 전기 신호(On/Off)로 변경하여 케이블을 통해 상대의 물리 계층으로 전달
  • 전송 단위 - 1은 전기 신호로 On / 0은 전기 신호로 Off
  • 장비 - 통신 케이블, 허브 등

 

데이터 링크 계층 (Data-Link Layer)

  • 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행
  • 통신의 오류 탐지 및 복구 수행
  • 통신에는 컴퓨터의 고유 번호인 Mac 주소를 사용
  • 전송 단위 - 프레임 (Frame)
  • 장비 - 브리지, 스위치 등

 

네트워크 계층 (Network Layer) 

  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅) 수행
  • 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달
  • IP 주소 사용
  • 전송 단위 - 패킷 (Packet)
  • 장비 - 라우터, layer3 스위치 등

 

전송 계층 (Transport Layer)

  • 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 담당
  • 패킷 전송의 유효성 파악 및 재전송 등 담당
  • 전송 계층에 사용되는 프로토콜의 예시는 TCP, UDP 등이 있음
  • 전송 단위 - 세그먼트 (Segment)
  • 장비 - 게이트웨이(GateWay), layer4 스위치 등

 

세션 계층 (Session Layer)

  • 네트워크 상 양쪽 연결을 관리하고 연결을 지속시킴
  • TCP/IP 세션을 생성하고 없애는 역할
  • SSH, TLS 등의 프로토콜 사용

 

표현 계층 (Presentation Layer) 

  • 송수신 측 사이에서 데이터의 형식을 정함
  • 전달받은 데이터를 번역, 압축, 암호화하여 표준 형식으로 변환함
  • JPG, MPEG, SMB 등의 프로토콜 사용

 

응용 계층 (Application Layer)

  • 응용 프로그램을 통해 사용자와 직접 연결되어 정보를 입력받아 하위 계층으로 전달
  • HTTP, DNS, FTP 등의 프로토콜을 사용

 

 

3. 'TCP/IP 4계층'에 대해 자세히 알아보자

(1) 각 단계의 핵심 역할

응용 계층 (Application Layer) 응용 프로그램이 사용되며, 실질적으로 사용자에게 서비스를 제공
전송 계층 (Transport Layer) 송수신자 사이를 연결하는 통신 서비스 제공, 데이터 전달 시 중계 역할
인터넷 계층 (Internet Layer) 네트워크 패킷을 IP주소로 지정된 목적지로 전송
링크 계층 (Link Layer) 실질적으로 데이터 전달 담당, 장치 간의 신호 전달을 위한 규칙을 정함

 

 

(2) 각 단계별 구체적인 역할

 

링크 계층 (Link Layer)

  • "네트워크 접근 계층"이라고도 함
  • 전선, 광섬유, 무선 등을 통해 실질적으로 데이터를 전달
  • 데이터를 전기 신호로 변경하여 전달
  • 이더넷(Ethernet), wifi 등의 프로토콜 사용

 

인터넷 계층 (Internet Layer)

  • 장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송
  • 패킷을 수신해야 할 상대의 주소를 지정하여 데이터 전달
  • 비연결형적 특징 (상대방이 올바르게 수신했는지를 보장하지 않음)
  • IP, ARP, ICMP 등의 프로토콜 사용

 

전송 계층 (Transport Layer)

  • 통신 노드 간의 연결을 제어, 신뢰성 있는 데이터 전송을 담당
  • 송신자와 수신자를 연결하는 통신 서비스를 제공
  • 어플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할 담당
  • TCP, UDP 등의 프로토콜 사용

 

응용 계층 (Application Layer)

  • 응용 프로그램이 사용되는 계층
  • HTTP, FTP, SSH, SMTP, DNS 등의 프로토콜 사용

 

4. 'OSI 7계층'과 'TCP/IP 4계층'의 차이를 비교해보자

두 개 모두 네트워크 통신을 관리하고 표준화한 모델임

OSI 계층은 7단계, TCP/IP 계층은 4단계로 구성되어 TCP/IP가 훨씬 더 간결함

OSI 계층은 네트워크 통신 과정을 표준적으로 잘 나타낸 모델이라고 할 수 있고, TCP/IP 4계층은 실제 네트워크 통신에 더 특화된 모델이라고 볼 수 있음

 

 

'Computer Science > 네트워크' 카테고리의 다른 글

HTTP Status Code에 대해 알아보자  (1) 2024.02.09
GET과 POST를 비교해보자  (0) 2024.02.04
HTTP에 대해 알아보자  (1) 2024.02.04
TCP의 3 Way HandShake  (0) 2024.02.04
TCP와 UDP를 비교해보자  (1) 2024.02.04

+ Recent posts