드디어 마지막 계층인 응용 계층에 도달했다!
요청과 응답
사용자가 URL을 입력하는 행위를 요청이라고 하고, 서버는 사용자의 요청에 응답을 한다.
HTTP 프로토콜 HyperText Transfer Protocol
요청과 응답을 위한 프로토콜이다. 클라이언트와 서버가 어떻게 데이터를 교환할지 정해놓은 규칙으로, 80번 포트를 사용한다. 문자 형태로 데이터가 전송된다. 그 데이터의 구조는 다음과 같다.
시작 라인 |
헤더 |
공백(1줄) |
바디 body |
시작 라인
요청/응답이 어떤 메시지인지를 알려준다. 요청 메세지의 경우 HTTP 메서드, 경로, HTTP 버전으로 이루어져 있다.
GET /index.html HTTP/1.1
HTTP 메서드
데이터를 수신하는 서버에서 어떤 작업을 해야 하는지를 알려주는 용도이다. GET, POST, PUT, PATCH, DELETE 등이 있다.
경로
웹 페이지를 보여주기 위한 파일이나 이미지 등의 경로다. '/경로/파일명.확장자' 형태이다.
ex) webapp/index.html
서버에서 자동으로 index.html이라는 파일을 설정한 경우에는 경로의 마지막에 파일명.확장자 형태가 없을 수도 있다.
버전
1.0, 1.1, 2.0이 있다.
1.0 버전은 요청마다 연결을 수립하고 종료하는 과정을 반복해 성능이 저하되는 문제점이 있었다.
1.1 버전은 가장 많이 상용되는 버전으로, 데이터 교환이 끝마칠 떄까지 연결을 유지하고 끝나면 연결을 종료한다.
2.0 버전은 Binary Frame을 추가해 텍스트 데이터를 바니어리로 변환해 분할해 전송해 전송 속도가 빠르다.
응답 메세지의 경우 HTTP 버전과 응답 메세지로 구성되어 있다.
HTTP/1.1 200 OK
응답 메세지
성공 여부 등을 나타낸다.
ex) 200 OK는 요청이 성공했음을 뜻한다.
헤더
다음 정보가 포함된다.
- 호스트: 서버의 도메인 이름과 포트 번호
- 연결: 작업이 끝난 후에도 네트워크 연결 상태를 유지할지 여부
- 언어: 서버가 응답에 사용할 언어
바디
전송하려는 데이터
DNS 서버 Domain Name System
IP 주소를 도메인 주소로 변경해주는 것이다. 이를 테면 구글의 IP 주소인 142.250.206.228을 www.google.com인 도메인 주소로 변경해준다.
사용자가 www.google.com을 웹 브라우저에 입력하면 요청이 DNS 서버에 전달되고 DNS 서버는 142.250.206.228을 전달해준다. 사용자는 그 IP 주소를 이용해 웹사이트에 접속한다.
만약 DNS 서버가 IP 주소를 모른다면 다른 DNS 서버에 질의해 주소를 전달받는다.
DHCP 서버
컴퓨터마다 할당되어 있는 IP 주소를 기기마다 하나하나 입력해주고 안 쓰는 기기에서는 반납하는 것은 관리하기 번거롭다. DHCP는 이 문제점을 해결하기 위해 IP 주소를 자동으로 관리해 할당하거나 회수한다.
SMTP
이메일 송신자가 사용하는 프로토콜이다. 송신자는 메일 서버에 25번 포트(SMTP 프로토콜)로 통신을 한다. 송신자 측 메일 서버 역시 SMTP를 이용해 수신자의 메일 서버에 이메일을 전달한다. 그 이후 수신자 측 메일 서버는 수신자의 편지함에 이메일을 저장한다.
POP3, IMAP
이메일 수신자가 사용하는 프로토콜이다. 사용자의 패스워드를 확인한 후 이메일 목록에서 이메을을 내려받을 수 있게 해준다. POP3는 이메일을 내려받으면 서버에서 이메일이 삭제되고, IMAP은 삭제되지 않는다.
로드 밸런서
응용 계층에서 로드 밸런서는 URI, HTTP 헤더, 쿠키 등을 기준으로 부하를 분산시켜준다. 이를 테면 쇼핑몰 웹사이트에서는 로그인을 위한 인증 서버, 검색 서버, 결제 서버 등으로 서버를 분리구성해 부하를 분산시킬 수 있다.
'공부 > 네트워크' 카테고리의 다른 글
네트워크 기초 5일차: 전송 계층 (0) | 2025.02.16 |
---|---|
네트워크 기초 4일차: 네트워크 계층 (0) | 2025.02.08 |
네트워크 기초 3일차: 데이터 링크 계층 (0) | 2025.02.01 |
네트워크 공부 2일차: 물리 계층 (0) | 2025.01.29 |
네트워크 기초 1일차: OSI 7계층 (0) | 2025.01.28 |