CS

[네트워크] OSI 7계층, TCP/IP, HTTP

jny0 2023. 10. 14. 21:31

 

OSI 7계층


OSI 7계층은 국제 표준화 기구에서 네트워크 통신이 이루어지는 과정을 7단계로 나눈 네트워크 표준 모델이다.

  • 데이터를 송신할 때는 높은 계층에서 낮은 계층으로 / 수신부에서는 낮은 계층에서 높은 계층으로 데이터를 전달한다.
  • 데이터 캡슐화 : 데이터를 송신할 때 각 계층에서 필요한 정보를 추가해 데이터를 가공하는데 이 때 제어 정보를 담은 헤더나 트레일러를 붙이는 것
    • 헤더는 데이터 앞에 붙고 트레일러는 데이터 뒤에 붙는다
  • 프로토콜 : 통신 규약. 데이터를 송수신하기 위해 정한 규칙

 

 

https://huimang2.github.io/etc/iso-standard-7498

 

  • 7계층(응용 계층) : 사용자에게 통신을 위한 서비스 제공. 인터페이스 역할
  • 6계층(표현 계층) : 데이터의 형식(Format)을 정의하는 계층 (코드 간의 번역을 담당)
  • 5계층(세션 계층) : 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
  • 4계층(전송 계층) : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층 (단위 :Segment) (ex. TCP, UDP)
  • 3계층(네트워크 계층) : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층 (단위 :Packet) (ex. Router)
  • 2계층(데이터링크 계층) : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층 (단위 :frame) (ex. 이더넷)
  • 1계층(물리 계층) : 데이터를 전기 신호로 바꾸어주는 계층 (단위 :bit) (장비: 케이블,리피터,허브)

 

 

 

TCP/IP 4계층


TCP/IP는 인터넷에서 데이터를 주고받기 위한 네트워크 프로토콜이다.

  • TCP : 데이터를 나눈 단위인 패킷의 전달 여부와 전송 순서를 보장하는 통신 방식
  • IP  : 패킷을 빠르고 보내기 위한 통신 방식
  • TCP/IP 기반 프로토콜에는 대표적으로 HTTP가 있다.
  • TCP/IP에 맞춰 네트워크 통신 표준인 OST 7계층을 단순화 한 것이 TCP/IP 4계층이다.

 

https://shlee0882.tistory.com/110

 

  • 4계층(응용 계층): 사용자와 소프트웨어를 연결해 주는 계층으로, HTTP, HTTPS, DNS 등의 프로토콜이 작동한다.
  • 3계층(전송 계층): 데이터의 신뢰성을 보장하며, 포트 번호로 데이터를 적절한 응용 프로그램에 전달하는 역할을 한다. TCP, UDP 등의 프로토콜이 전송 계층에 속한다. 전송 계층의 데이터 단위는 세그먼트라고 한다.
  • 2계층(인터넷 계층): 데이터를 최종 목적지까지 도달할 수 있게 하는 계층으로, IP가 대표적인 프로토콜이다. 인터넷 계층에서는 전송 계층으로부터 받은 데이터에 헤더를 붙여 캡슐화하는데, 이를 패킷 또는 데이터그램이라고 한다.   
  • 1계층(네트워크 인터페이스 계층): 네트워크 접근 계층이라고도 하며, 데이터를 전기 신호로 변환하고 MAC 주소를 사용해 기기에 데이터를 전달한다. 이더넷, Wi-Fi 등이 해당 계층에 속하는 대표적인 프로토콜이다.

 

패킷 : 네트워크에서 주고받는 데이터를 작게 분할한 단위 (데이터의 송신 주소, 수신 주소 등의 정보가 포함)
MAC 주소 : 48비트로 구성된 하드웨어 고유의 주소로, 네트워크 인터페이스 계층에서 사용한다.

 

 

 

HTTP


인터넷상에서 데이터를 전송하기 위한 프로토콜로 TCP/IP 4계층에서 응용 계층에 속한다.

비연결성, 무상태성의 특징이 있다.

 

비연결성

  • 클라이언트에서 요청을 보낸 후 서버로부터 응답을 받으면 연결을 끊는 것
  • 서버에서 으답을 받고 나서도 연결을 유지하려면 자원을 사용하게 되는데 비연결성은 연결을 끊음으로서 자원을 아낄 수 있다.
  • 반대로 서버가 클라이언트를 기억할 수 없기 때문에 동일한 클라이언트에서 연속적으로 요청이 오면 연결과 연결해제 과정을 반복하게 되어 자원을 낭비할 수 있다.
  • 단점을 보안하기 위해 일정 시간 동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용하여 마지막 응답 이후 일정 시간동안 연결을 유지한다.
🔔 HTTP Keep Alive
HTTP 연결 시 일정 시간 동안 요청을 유지할 수 있도록 사용하는 HTTP 헤더의 일종이다.
클라이언트에서 HTTP 요청을 보낼 때 연결 헤더에 Keep Alive를 추가해서 보내면 서버에서 연결을 유지할 시간을Keep Alive 헤더에 추가해 응답한다.

 

무상태

  • 서버에서 클라이언트의 상태를 저장하지 않는 것
  • 클라이언트가 이전에 요청한 사항을 서버에 저장하지 않기 때문에
    • 클라이언트가 요청에 필요한 데이터를 모두 가지고 있거나 (쿠키)
    • 서버가 클라이언트로부터 받은 요청 사항을 모두 저장해야한다 (세션)
  • 무상태의 장점은 서버 확장성이 높다는 것이다.

 

HTTP 메시지 구조

  • 요청 라인(request line) : 요청 URI, 요청 방법, HTTP 버전 등을 포함한다. 
  • 상태 라인(status line) : 요청에 대한 HTTP 상태 코드와 HTTP 버전을 포함한다.   
  • 헤더(header) : 키-값으로 구성된 다수의 헤더 항목으로 구성된다. 
  • 빈 줄(blank line) : 헤더의 끝을 나타내는 빈 줄로, 헤더와 바디를 구분한다.   
  • 바디(body) : 요청할 때 요청 방법 메서드가 POST인 경우에만 바디가 있고, 그 외 메서드일 때는 비어 있는 상태로 전달한다.

 

HTTP 메서드

  • POST : 데이터를 생성할 때 사용
  • GET : 데이터를 조회할 때 사용
  • PUT : 데이터를 갱신할 때 사용 
  • PATCH : 데이터를 일부 갱신할 때 사용
  • DELETE : 데이터를 제거할 때 사용

 

HTTP 상태 코드

HTTP 상태 코드는 클라이언트의 요청에 대한 서버의 상태를 알려 주는 코드로, 세 자리 숫자로 표현한다. 

  • 1xx: 클라이언트로부터 요청을 받아 처리 중
  • 2xx: 요청을 성공적으로 처리함
  • 3xx: 요청을 처리하기 위해 추가 처리 필요
  • 4xx: 클라이언트 오류
  • 5xx: 서버 오류

 

 

 

 

참고

https://dev-coco.tistory.com/161

기술 면접 대비 CS전공 핵심요약집 | 이수진 https://product.kyobobook.co.kr/detail/S000208504237