HTTP의 통신 방식
- HTTP는 리퀘스트(요청)과 리스폰스(응답)으로 통신한다
*리퀘스트가 없으면 리스폰스도 없음
- HTTP 초기에는 한 번 통신을 하면 연결이 종료되는 방식을 채택
TEXT 정보만 왔다 갔다 했기 때문에 괜찮았지만 이후 웹페이지에 이미지, 동영상 등이 추가되면서 통신량이 너무 많아졌다.
- 이를 해결하기 위해 지속 연결을 활용
한 번 연결이 된 네트워크는 한 쪽이 명시적으로 연결을 종료하지 않는 이상 유지되게 했다.
- 파이프 라이닝
리퀘스트1 -> 리스폰스1, 리퀘스트2 -> 리스폰스2 순차적 방식에서 리퀘스트1, 리퀘스트2 -> 리스폰스1, 리스폰스2 연속적인 방식으로 바꾸는 작업으로 리스폰스를 기다리지 않고 리퀘스트를 보내기 때문에 속도 면에서 훨씬 빠르다.
상태 유지
HTTP는 상태를 유지하지 않는 프로토콜이다.
새로운 리퀘스트가 보내질 때마다 새로운 리스폰스가 생성되고 이전에 보냈던 리퀘스트나 리스폰스는 기억하지 못한다.
쿠키
상태를 유지하지 않기 때문에 리소스 관리에는 좋지만 로그인 같이 인증의 과정을 거치는 기능들은 페이지를 이동할 때마다 다시 로그인을 하거나 추가 정보를 붙여 관리를 해야하는 불편함이 있다.
쿠키라는 개념을 이용해 이를 해결했는데 서버측에서 리스폰스를 보낼 때 어떤 클라이언트에 무슨 데이터를 전송했는지쿠키에 담아 (Set-Cookie : 데이터) 클라이언트에 같이 보내고 클라이언트는 이를 저장해 놨다 다음에 동일한 요청을 보낼 때 쿠키를 리퀘스트에 붙여 (Cookie : 데이터) 서버에 전송한다.
서버는 쿠키를 사용해서 어느 클라이언트가 접속했는지 확인하고 서버 기록을 통해서 이전 상태를 알 수 있다.
메소드 종류
- GET : 리소스 취득
- POST : 엔티티 바디 전송
- PUT : 파일 전송
- HEAD : 메시지 헤더 취득 (웹 서버의 다운 여부 점검이나 웹 서버 정보(버전 등)등을 얻기 위해 사용)
- DELETE : 파일 삭제
- OPTION : 사용 가능한 메소드 검색
- TRACE : 경로 조사
- CONNECT - 프록시 터널링 (우회하는 느낌인듯)
* 터널링이란 네트워크 상 다른 길을 만들어 목적지에 접근 (새로운 터널을 만들어서 접근하는 느낌)
* 캡슐화를 이용하기 때문에 캡슐을 벗기지 않고 수행
- LINK : 리소스 간에 링크 관계 확립
- UNLINK : 링크 관계 삭제