-
[Web] 토막글Programming/Web 2020. 1. 13. 16:19
W3C(World Wide Web Consortium)
W3를 위한 표준을 개발하고 장려하기 위한 조직
팀 버너스 리
웹의 아버지, 팀 버너스 리는 하이퍼텍스트 기반 문서를 생산하고 공유할 수 있는 규약과 도구를 발명하였고, 중앙에서 누구에게 소유되거나 관리되지 안고 움직이는 철학을 제시했다. 또한 웹에 대한 특허를 포함한 소유권을 주장하지 않고 모두가 자유롭게 사용할 수 있도록 공개하였다. 그를 인터넷의 발명자, 인터넷의 아버지라고 칭하는 이유는 여기에 있다.
서킷(Circuit) 통신
한 팀이 이동을 할 때 같은 차를 타고 목적지 까지 이동하는 것과 같다. 처음부터 끝까지 같은 경로를 이용하는 것이다. 이 통신방식은 양 쪽이 일대일로 연결되어 연결이 된 상태에서는 해당 회선을 완전히 점유한다. 이와 같은 특징으로 서킷 통신은 음성통화에 주로 사용된다.
패킷(packet) 통신
한 팀이 이동할 때 각각 따로따로 이동해 목적지에서 한 데 만나는 것이다. 이 통신 방식은 일정 경로를 완전히 점유하지 않고 데이터를 전송할 수 있기 때문에 네트워크를 효율적으로 이용할 수 있다는 장점이 있다. 이와 같은 특징으로 패킷은 데이터 통신에 주로 사용된다.
TCP/IP
인터넷 통신의 대부분은 패킷 통신을 기본으로 한다. TCP/IP는 패킷 통신을 위한 인터넷의 규약이다.
IP는 데이터의 조각들을 최대한 빨리 목적지로 보내는 역할을 한다. 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는 데 집중을 한다.
TCP는 IP보다 느리지만 꼼꼼한 방식을 사용한다. 도착한 조각을 점검하여 정렬하고, 망가졌거나 빠진 조각을 다시 요청한다.
요약하자면 IP는 기본적으로 상대방에 전달할 때 안정적으로 전달된 것을 보장하지 않는 프로토콜이다. 그것을 보장해주는 프로토콜이 TCP이다. TCP/IP는 IP 위에서 동작하는 프로토콜로 두 방식의 조합을 통하여 신뢰성 있는 인터넷 통신을 할 수 있게 해주는 기술을 TCP/IP라고 부르는 것이다.
DNS(Domain Name System)
보통의 IP 주소는 숫자지만 naver, google 등에서는 도메인 네임 주소를 사용한다. 우리가 이해하기 쉬운 이름으로 주소를 바꿔주는 서비스를 하는 서버가 DNS server이다.
Hyper Text
Hyper Text는 'Text를 뛰어넘다' 라는 의미를 가지고 있다. 일반적으로 가지고 있는 텍스트의 정보에 대한 접근인 순차적 접근을 뛰어넘는다는 의미이다. 예를 들어, 위키피디아의 목차 항목을 클릭하면 항목에 대한 정보로 이동하는 것이 Hyper Text의 비순차적 접근법에 대한 예이다.
Markup Language
마크업이란 표시한다라는 의미를 가지는데, 책에서 중요한 부분에 밑줄을 긋는 행위도 그 내용이 중요하다는 의미를 나타내므로 마크업의 일종이라 할 수 있다.
Markup Language는 문서를 구조적으로 표시하기 위한 데이터 기술 언어이다. 화면에서 보이는 문서의 구조와 마크업 규칙을 정의한다.
HTML(Hyper Text Markup Language)
Hyper Text 문서를 만들기 위한 언어, 웹 페이지를 만드는 언어
HTTP(Hyper Text Transfer Protocol)
HTTP는 WWW(인터넷에 연결된 컴퓨터들을 통해 정보를 공유할 수 있는 전세계 정보 공간) 상에서 서버와 클라이언트가 인터넷 상에서 데이터를 주고 받기 위한 프로토콜을 말한다.
HTTP 특징
1. 클라이언트 - 서버 아키텍처 : 클라이언트 측에서 요청을 보내고, 서버 측에서 응답을 보내는 구조
2. stateless : 서버는 클라이언트의 요청에 대한 상태를 가지지 않기 때문에 이전에 처리된 통신에 대해 알 수 없다. 클라이언트가 보내는 각각의 HTTP 요청에 독립적으로 응답하는 방식이다.
3. cookies : HTTP가 가지는 stateless 특징으로 인해 생긴 기술로, 상태를 유지하기 위한 기술이다.
- 세션 쿠키 : 사용자가 브라우저를 닫으면 지워지는 쿠키
- 지속 쿠키 : 클라이언트의 PC에 저장이 되는 쿠키로, 브라우저를 닫고 다시 실행하여도 쿠키를 사용할 수 있다.
클라이언트가 서버에 컨텐츠를 요청하는 것을 Request, 서버가 클라이언트에게 요청받은 컨텐츠를 주는 행위를 Response 라고 한다.
HTTP는 Request와 Response를 나타낸다. 컨텐츠를 주고받기 위해서는 서버와 클라이언트가 서로 알아들을 수 있는 공통의 약속된 메시지가 필요한데 그 메시지를 HTTP라고 하고 HTTP는 크게 Request와 Response를 위한 메시지로 구분되어있다.
웹브라우저의 역할은 사용자가 요청한 정보를 요청 헤더를 만들어 웹 서버에게 대신 물어봐주는 것이고, 웹 서버가 요청에 따라 응답 헤더를 만들어 응답하면 응답한 정보를 화면에 적당히 그려주는 역할을 한다.
Client-Server의 TCP/IP 통신
https://4ngeunlee.tistory.com/190
HTTP 메시지
HTTP 메시지는 클라이언트와 서버 간에 주고받은 데이터이다.
HTTP 메시지는 Request(요청), Response(응답) 메시지로 나눌 수 있는데, 둘 다 아래와 같은 형식으로 구성된다.
- 시작줄(Start Line)
- 헤더(Header) : 메시지 본문에 대한 부가적인 정보 표현
- 본문(Body) : 메시지의 실제 내용
HTTP Request Header Format
* Request Message Header : Request Line + Request Headers
* Request Line : [요청 메서드] [요청하는 자원의 위치] [HTTP 버전]
* Request Headers
- Host : 사용자가 요청하는 웹서버 주소
- User-Agent : 웹 브라우저의 다른 표현, 사용자 대리인
* 서버쪽에 전송 해야 될 정보가 있다면 Request Body에 전달
* Request Headers와 Request Body는 blank line으로 구분한다.
HTTP Response Header Format
* Response Message Header : Status + Response Header
* Status : [HTTP 버전] [상태 코드] [응답 메시지]
* Response Headers
- Content-Type : 응답하는 data 정보
* Resourse Body : 실제 응답 resourse data
HTTP Status Code
* 2xx (success)
* 3xx (redirections)
* 4xx (client errors)
- 403 : Forbidden, 관계자 외 출입금지
- 404 : Not Found
* 5xx (server errors)
- 500 : Internal Servler Error
HTTP 요청 메서드 - GET
정보를 요청하기 위해서 사용한다. (READ)
HTTP 요청 메서드 - POST
정보를 밀어넣기 위해서 사용한다. (CREATE)
HTTP 요청 메서드 - PUT
정보를 수정하기 위해서 사용한다. (UPDATE)
HTTP 요청 메서드 - DELETE
정보를 삭제하기 위해서 사용한다. (DELETE)
HTTPS의 용도
HTTP는 암호화 되지 않은 평문으로 통신을 하기에 도청, 변조, 위장의 문제가 있다.
HTTPS는 HTTP에 SSL(Socket Secure Layer) 계층이 추가된 모드로 HTTP의 보안 문제를 방지해주는 보안이 강화된 프로토콜이다.
Maven
Java 기반 프로젝트의 빌드 도구, 라이브러리 관리 기능
Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, setting.xml 또는 pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 알아서 다운받고 설치, 경로까지 지정해준다.
장점 : pom.xml 파일을 통해 관리하므로 개발, 유지보수 측변에서 오픈소스 라이브러리, 프로젝트 등 관리가 용이하다.
'Programming > Web' 카테고리의 다른 글
[Web] 웹 서버 VS 웹 애플리케이션 서버 (WAS) (0) 2020.01.14 [Web] Client - Server의 TCP/IP 통신 (0) 2020.01.14 [Web] NodeList vs Array (0) 2020.01.12 [CSS] float (0) 2019.12.17 AWS - nodejs 환경설정 (0) 2019.04.29