프로토콜
정의
- 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정기능을 포함할 수 있다. (위키백과)
- 통신 프로토콜은 통신(데이터를 주고 받는) 상호간에 미리 약속된 규칙, 규약입니다.
- 송신자와 수신자 사이에 "데이터 구조는 이런식으로하고", "그건 이런의미이고", "속도는 어느정도로 보내고" 그런식으로 보내기로하자. 라고 약속을 한 것 입니다.
- 비유를 하자면, 어디 기업에 내 이력서를 보낸다고 할때 메모장에 그냥 줄 글로 한자 영어 막 섞어서 작성해서 제출하는것과, 그 회사와 약속되어있는 (그 회사가 제공하는) 이력서 양식에 맞추어 써서 보내는 것의 차이. 라고 생각하면 될거 같습니다. 양식에 맞추어 보내게 된다면 상대방이 받았을때 어느 부분에 뭐가 있으며, 이 정보는 이뜻이구나 하고 알 수 있지요! 이런 것을 네트워크 상에 미리 정해 놓은 것 입니다.
- 이러한 프로토콜을 정의하는 기관은 IEEE, ISO 등이 있습니다.
https://blockdmask.tistory.com/185
HTTP
https://opentutorials.org/module/3621/21674
- 클라이언트는 어떤 메시지를 통해서 서버에 요청하고, 서버는 어떤 메세지를 통해서 서버에 응답하는가?
서버님 HTML 주세요 = REQUEST
여기있습니다 = RESPONSE
- HTTP는 REQUEST와 RESPONSE를 뜻함
- HTML, 이미지 등이 컨텐츠면 이를 주고 받을때 약속이 필요함 => 그것이 HTTP
- 크롬 개발자도 구를 보면 Network탭에서 웹 브라우저와 웹서버가 통신된 걸 볼 수 있다.
- Headers: REQUEST HEADERS: 웹 브라우저가 웹서버에 요청한 것들 보여줌
=> View 하면 보여짐.
=> content-type: 웹서버가 응답하는 타입이 무엇이다.라는걸 보여줌
- 웹 브라우저는? 사용자가 요청한 정보를 웹서버에게 대신 물어봐주는 것
웹 브라우저는 응답한 결과를 화면에 적당히 그려주는 역할이다!
HTTP Request Message
HTTP/1.1 : 사용가능 HTTP 버전 정보
- HOST: 인터넷에 연결되어 있는 한대한대를 식별하는 것
- 요청하는 웹사이트의 주소를 적는 것
- 웹서버가 a.com / b.com / c.com 호스팅 중이라면, 여기 있는 정보에 따라 다른 정보를 보내준다.
- 8080이라는 포트번호에 등록되어있는 웹서버 의미
- Accept-Encoding: 이 웹브라우저는 어떤 압축방식을 사용한다고 알려주는 것.
=> 압축해서 보내면 네트워크 자원아낄 수 있어서 사용함
- If-Modified-Since: 내가 가지고 있는 파일은 마지막으로 언제 다운로드 받은 파일이라는 것을 웹서버에 알려준다.
그럼 웹서버는 자기가 가지고 있는 파일이랑 뭐가 더 최신인지 보고, 전송해줄지 안전송해줄지 정하고 실행한다. 그럼 속도도 줄일 수 있고 서로에게 윈윈이 가능함!
Response Message
- Response Headers이후에 한칸 띄우고 html 정보 답변해줌
- HTTP/1.1 이라는 포맷을 쓰고 있다.
- 200은 status code라는 것으로, 2xx는 성공했다는 뜻
2xx: 성공
200 OK요청이 성공적으로 되었습니다. 성공의 의미는 HTTP 메소드에 따라 달라집니다:
GET: 리소스를 불러와서 메시지 바디에 전송되었습니다.
HEAD: 개체 해더가 메시지 바디에 있습니다.
PUT 또는 POST: 수행 결과에 대한 리소스가 메시지 바디에 전송되었습니다.
TRACE: 메시지 바디는 서버에서 수신한 요청 메시지를 포함하고 있습니다.
3xx: 리다이렉션 메시지
300 Multiple Choice요청에 대해서 하나 이상의 응답이 가능합니다. 사용자 에이전트 또는 사용자는 그중에 하나를 반드시 선택해야 합니다. 응답 중 하나를 선택하는 방법에 대한 표준화 된 방법은 존재하지 않습니다.
4xx: 에러
400 Bad Request이 응답은 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미합니다.
403 Forbidden클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를들어 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.
404 Not Found서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. 이것은 API에서 종점은 적절하지만 리소스 자체는 존재하지 않음을 의미할 수도 있습니다. 서버들은 인증받지 않은 클라이언트로부터 리소스를 숨기기 위하여 이 응답을 403 대신에 전송할 수도 있습니다. 이 응답 코드는 웹에서 반복적으로 발생하기 때문에 가장 유명할지도 모릅니다.
5xx: 서버 에러
500 Internal Server Error서버가 처리 방법을 모르는 상황과 마주쳤다. 서버는 아직 처리 방법을 알 수 없다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
*출처:
codeflow.study
HTTPS : HTTP Secure
- HTTP를 통해 통신을 하고 있다면, 누군가 정보를 보고 있다고 간주해야한다.
- HTTPS를 사용하면 전송하고 있는 내용을 가로채도, 당사자만 내용을 이해할 수 있다. 암호화 되어있어서.
- HTTPS가 아닌 사이트에서 로그인을 요구한다면 로그인 X
- HTTPS를 꼭~도입해야 한다
Cache
- 한번 접속한 웹사이트에서 저장을 다운 받았다면, 또 다운을 필요 없잖아. 저장된 걸 가져오면 됨 => 캐시
- 갱신되었을 때, 리프레쉬하면 강제 캐시 갱신 됨
- 근데 사용자는 이걸 모름, 그래서
- cache-control, pragma는 캐시를 제어하는 테크닉임
- application cache도 이러한 목적으로 고안된 것
Cookie
- 쿠키값을 웹 브라우저에 설정하면, 사용자 정보를 저장해서 사용자 식별 가능
- Web Storage => 쿠키보다 보안 UP
- Proxy 서버 : 캐시를 대신해주거나, 보안과 관련된 것을 막아주거나 => 중간에 두는 것
네트워크 관리도구
- Developer tools > Network
- 와이어 샤크 : 오픈소스로서 HTTP뿐만아니라 컴퓨터에서 일어나는 모든 네트워크 트래픽 감시 가능
OAuth2.0
https://real-dongsoo7.tistory.com/113
'[WEB]' 카테고리의 다른 글
[JSP / Servlet] 웹 컨테이너 구조 / Servlet 파일작성 / .class파일 확인 (0) | 2020.06.04 |
---|---|
[JSP / Servlet] Server / JSP 파일 실행해보기 예제 (0) | 2020.06.04 |
[Java] 특수 문자와 서식문자 (0) | 2020.05.09 |
[Java] Java Project 커리큘럼 (0) | 2020.05.09 |
[Java] 변수 / 기본자료형 (0) | 2020.05.07 |