쉽게 배우는 데이터 통신과 컴퓨터 네트워크를 정리한 내용입니다
1. 웹의 구조
웹 브라우저 : 서버가 제공하는 웹 정보를 사용자 화면에 보여주는 프로그램
웹의 TCP 포트 번호 : 80
클라이언트로써 웹 브라우저는 포트번호를 이용해 서버와 연결을 시도한다.
웹서버와 연결이 설정되면 클라이언트의 정보요구에 대해 서버가 웹 문서를 회신하는 방식으로 응답한다.
클라이언트와 서버는 사용자의 정보 요구가 발생될때마다 새로운 연결을 설정하고 해제하는 과정을 반복한다
1) 클라이언트, 서버 모델
웹 환경에서 클라이언트와 서버의 연결설정&해제는 매번 반복된다. 이때 멀티미디어 데이터가 별도의 호스트에 존재한다면, 클라이언트는 미디어를 보관하는 서버와 추가로 TCP 연결을 설정하게 된다
< URL >
클라이언트가 웹 서버를 지칭할 때 사용하는 주소
사용하는 프로토콜, 도메인 주소, 서버내부의 파일 경로명 그리고 보이지 않지만 기본 포트 번호 80번으로 구성되어있다
> 웹서버를 구축하는 방법
1. 해당 호스트를 대표하여 웹 서버를 구축 : 위의 이미지처럼 서버와 연결된 주소가 있음
2. 서버에 등록된 사용자별로 웹 서버를 구축 : A라는 사용자, B라는 사용자별로 적용되는 시작 파일을 다르게 구성
> HTTP(HyperText Transfer Protocol)
클라이언트의 요청과 서버의 응답 정보를 전송하기 위한 목적으로 구현된 프로토콜
[클라이언트-서버 데이터 전송 과정]
사용자가 www.naver.com url 입력 -> DSN서버에 전송해 IP주소 획득 -> ip주소와 80포트를 이용해 웹 서버 프로그램과 TCP연결을 시도 -> 연결설정되고 어떤 문서의 내용을 요청시 서버는 이를 클라이언트에 회신해줌
💡 여기서 HTTP프로토콜은 클라이언트가 서버에 보내는 요청메세지 & 서버의 응답메세지를 전송 하는데 사용된다.
2) APM의 웹 서비스 구조
APM = Apache, PHP, MySQL
APM의 동작원리
- 웹브라우저는 웹서버의 기능을 하는 Apache 모듈과 연결을 설정하고 필요한 웹문서를 요청한다
- html만으로 구성되어있다면 바로 리턴하고 그게 아니라면 PHP, MySQL을 통해 필요한 데이터 및 작업을 수행한다
2. HTTP 프로토콜
빠르고 간편하게 데이터를 전송하는 프로토콜이다. 일반적으로 HTTP는 TCP프로토콜의 80번 포트를 사용하도록 정의된다
HTTP 명령에 해당하는 HTTP Method를 이용해 클라이언트가 서버에 요청을 전송하고, 서버에서 클라이언트로 정보를 회신한다
URL주소의 제일 왼쪽 프로토콜에 서비스 유형을 표현할 수 있다
HTTP:// -> HTTP 프로토콜 사용
FTP:// -> FTP 프로토콜 사용
telnet:// -> 텔넷 서버 사용
1) HTTP의 요청과 응답
HTTP 1.1버전은 클라이언트의 요청과 서버의 응답에 의해 동작하는 간단한 프로토콜이다
- HTTP 클라이언트가 서버에 요청을 전송(요청 매서드, URL, HTTP 버전 및 클라이언트 요청과 관련된 부가정보 포함)
- HTTP 서버는 요청의 처리결과를 응답코드가 포함된 상태 정보로 회신한다(요청 결과물 + 기타 정보 함께 회신)
비상태연결(Stateless)
TCP 연결이 설정된 후에 요청과 응답이 진행되고, 이어서 TCP 연결이 해제되기때문에 둘 사이에는 연결존재에 다른 상태정보가 존재하지 않는다.
이런 단발성의 연결방식은 웹문서가 간단하면 상관없으나, 내용이 복잡하면 문제를 야기한다(성능저하의 가능성이 있다)
MIME 유사 메세지
MIME(Multipurpose Internet Message Extension)
ASCII가 아닌 문자 인코딩을 이용해 영어가 아닌 다른 언어로 된 전자 우편을 보낼 수 있는 방식을 정의한다. 또한 그림, 음악, 영화, 컴퓨터 프로그램과 같은 8비트짜리 이진 파일을 전자 우편으로 보낼 수 있도록 한다.
HTTP의 요청, 응답 메세지는 MIME유사 구조를 사용해 데이터를 전송한다. 웹 브라우저에서 발생하는 모든 메세지는 MIME 개체와 거의 유사하계 표현된다
차이점은 HTTP의 MIME 유사객체에 Content-Length라는 헤더필드가 추가로 존재하며, Content-Transfer-Encoding 헤더 필드가 MIME에 있는대신 Content-Encoding/Transfer-Encoding 필드를 사용한다는 점이다
[요청 메세지]
클라이언트가 서버에 보내는 요청 메세지는
요청문(요청메서드/URL/HTTP 버전), 헤더, 바디로 구성된다
요청 메서드에는 클라이언트가 서버에 실행을 요구하는 명령을 기술한다
- GET : 클라이언트가 서버에 URL이 가르키는 웹 문서의 내용을 전송하도록 요구
- HEAD : 문서내용 보다는 특정 문서의 정보를 원할 때 사용
- POST : 클라이언트가 서버에 정보를 전송할 수 있도록 해준다
- PUT : 클라이언트가 서버에 문서를 전달하려고 할때 사용한다. 문서내용은 바디에 포함된다
[응답 메세지]
서버는 클라이언트의 요구를 처리한 후에 그 결과를 응답 메세지 형식으로 회신한다
바디 메세지의 구조는 요청 메세지 구조와 거의 비슷하며
요청문 대신 처리 결과를 의미하는 상태문(Status Line)을 이용한다
200(OK) : 요청이 성공적으로 수행됨
202(Accepted) : 클라이언트의 요청을 수신했으나, 즉시 실행되지 않고 있음
400(Bad Request) : 요청 메세지의 내용에 문법 오류가 존재
401(Unauthorized) : 요청을 실행하는데 필요한 적절한 권한이 존재하지 않는다
403(Forbidden) : 서비스 요청이 거부되었다
404(Not Found) : 원하는 문서를 찾을 수 없다
500(Internal Server Erro) : 서버 내부에 불가피한 오류가 발생
501(Not Implemented) : 요청 사항을 수행할 수 없다
2) HTTP의 동작과정
HTTP 클라이언트의 요청 메세지에 대해 HTTP 서버가 처리한 결과를 응답 메세지로 회신하는 형식으로 동작한다
요청 메세지
GET / index.php HTTP/1.1 (요청문)
Host : uu.ac.kr(헤더)
(공백 한 줄)
위와 같은 형식으로 작성할 수 있다(위의 예시는 바디가 존재하지 않음)
응답 메세지
HTTP/1.1 200 OK (상태문)
Date: Mon, 24 OCT 2022 22:29:29 GMT (헤더 start)
Server: Apache/1.3.29 (Unix) PHP/4.3.4RC3
X-Powered-By : PHP/4.3.4RC3
Transfer-Encoding: chuncked
Content-Type : text/html (헤더 end)
(공백 한 줄)
<html>
관련 내용
</html>
3. CGI(Common Gateway Interface)
사용자가 입력하는 정보를 웹 서버가 처리하기 위해 사용하는 기능으로 CGI는 정보를 주고받는 방법이나 규약이다.
웹 서버도 종류가 여러가지일 것이고, 프로그램 또한 엄청나게 많은 프로그램이 존재하기 때문에 서로 입출력을 주고 받을 표준이 필요하다.
많은 웹 서버 프로그램은 CGI의 기능을 이용할 수 있다(파이썬또한 사용이 가능하다)
'CS > 네트워크' 카테고리의 다른 글
13. 네트워크 프로그래밍 (0) | 2022.10.10 |
---|---|
12. 상위계층(세션 계층 + 표현 계층 + 응용 계층) (0) | 2022.10.02 |
11. UDP 프로토콜 & RTP 프로토콜 & OSI TP (0) | 2022.09.26 |
10. TCP정의 및 TCP동작 원리 (1) | 2022.09.21 |
9. 전송 계층의 기능 (0) | 2022.09.20 |