2018년 1월 18일 목요일

서버와 클라이언트 # HTTP

서버와 클라이언트

  • 서버 : 서비스를 제공하는 시스템(컴퓨터)
  • 클라이언트 : 서비스를 사용하는 사용자 or 사용자의 단말기
  • 웹서버 : 아파치, 톰캣, nginx
  • DNS 서버 : BIND, 윈도우 DNS 서버
  • 텔넷 : Telnet-server
  • 서비스 프로토콜 : HTTP, DNS, TELNET


HTTP


프로토콜 특징
HyperText Transfer Protocol, 텍스트 전송 프로토콜.
WWW에서 쓰이는 핵심 프로토콜로 문서의 전송을 위해 쓰인다.
음성 화상 등 여러 종류의 데이터도 전송 가능(MIME 이용)
1.0과 1.1이 존재


HTTP1.0
"연결 수립, 동작, 연결 해제" 과정만 존재, 단순함
HTML 문서를 전송 받은 뒤 연결을 끊고 다시 연결하여 데이터를 전송받는다.
연결 수립과 연결 해제하는데 자원의 낭비 발생


HTTP1.1
1.0과 호환 가능
1.0의 단점 보완, Multiple Request 처리가 가능, 클라이언트의 요청이 많을 경우

연속적인 응답 제공



프로토콜 구조
 
 
HTTP 요청
 
Request Line: 요청의 종류 + 공백 + URL + 공백 + HTTP 버전
GET, POST, HEAD, PUT, MOVE, DELETE, OPTION
 
URL - 웹 자료 고유의 이름으로 자원을 검색할 때 사용한다.
Method://Host[:Port]/[Path]/파일명[?param=값]
버전 : HTTP/1.1
Headers:
공백
Body:
 
 
GET / HTTP/1.1 ( NC.EXE WWW.NATE.COM 80 )에서 입력시 HHTP 정보가 나온다
Host: www.nate.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: pcid=151494249224916661; LOGIN=keeplogin=off&iplevel=2&loginid=; SAVED_NATEID=%7C0; SSL_LOGIN=1; NateMain=Loc=; UD3=j27d81568e2c0b2daabd9b0351bb1dc0; UA3=MDAxMDIwNDg0NzY=||
 

----------------------------------------------------------------
HTTP 응답 (홈페이지 접속 시 보여지는 응답 페이지)

Status Line : HTTP버전 + 공백 + 상태 코드 + 공백
 
상태 코드
100 ~ 199 : 단순한 정보
200 ~ 299 : 클라이언트의 요청이 성공적일 때
ex) 200 OK
300 ~ 399 : 클라이언트의 요청이 수행되지 않아 다른 URL로 재 지정
ex 302 Found : 브라우저의 요청을 임시 URL로 변경 후
Location 헤더에 임시로 변경한 URL 정보를 적는다.
400 ~ 499 : 클라이언트의 요청이 잘못됐을 때 ex) Forbidden 403 : 서버가 권한 없는 사용자의 클라이언트 거부.
ex) HTTP Not found 404 : 존재하지 않는 URL로 접근 할 때.
500 ~ 599 : 서버에서 오류 발생 또는 클라이언트의 요청 수행 불가
ex) 503 Service Unavailavle : 서버가 일시적으로 제공할 수 없거나
복구가 필요하다는 뜻
Dos 공격, 사용자 폭주할 때 주로 표시된다.
 
Headers
공백
Body
 
HTTP/1.1 400 Bad Request
Date: Wed, 10 Jan 2018 03:04:53 GMT
Server: Apache
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1

----------------------------------------------------------------

헤더
클라이언트가 특정 형식으로 전송을 요청하거나 서버가 문서에 대해 추가적인 정보를 전달
 
헤더의 구조
헤더 이름 : 헤더값
 
헤더의 종류
 
일반 헤더 : 요청과 응답에 대한 일반적인 정보를 제공
Connection, Date(날짜 시간) ,Content-Length(컨텐츠 크기), Content-Type (전달하는 데이터가 무엇인지)
ex) (text/html, text/plain, image/png)
요청 헤더 : 클라이언트의 구성과 선호하는 문서 형식 지정
cookie (서버에 접속한 기록 전송) Host (1.1 Ver.부터 필수 헤더)
Referrer (이전 페이지가 무엇인지 알려주는 것),
User-Agent (브라우저 및 운영체제의 정보가 들어있음)
응답 헤더 : 서버의 구성과 선호하는 문서 형식의 지정
Server( 정보를 가릴 수 있음) , SetCooktie 
항목 헤더 :본문에 대한 내용 제공
Location

댓글 없음:

댓글 쓰기