[TIL] 230907

jeongjwon·2023년 9월 7일
0

이론

목록 보기
2/19

네트워크

1. 웹 프로토콜에 대해 설명해주세요.
웹에서 쓰이는 통신 규약입니다.


2. ⭐ HTTP에 대해 설명해주세요.
HTTP 는 Hyper Text Protocol 의 약자로 브라우저가 웹 서버와 통신을 하기 위해 사용하는 주요 프로토콜입니다. 즉, 인테넷에서 데이터를 주고 받기 위한 통신규약입니다. 데이터를 주고 받기 위해서는 클라이언트가 요청을 보내고 서버가 응답을 받습니다.
일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번입니다. HTTP 는 암호화 되지 않은 평문 데이터를 전송하기 때문에 보안이 취약합니다.각각의 데이터 요청이 서로 독립적으로 관리되는 상태가 없는 무상태성을 띕니다.

(https://www.youtube.com/watch?v=IjxkKQvn8Bc)

3. ⭐ HTTP의 GET, POST를 비교 설명해주세요.
GET 과 POST 는 둘 다 브라우저가 서버에 요청하는 것입니다.

GET 은 존재하는 리소스에 대한 조회 요청으로 POST 와는 다르게 필요한 데이터를 Body 에 담지 않고, 필요에 따라 쿼리스트링을 통해 전송합니다.

POST 는 리소스를 새롭게 생성하거나 수정하기 위한 요청으로 전송되어야 할 데이터를 HTTP 메시지의 Body 에 길이 제한없이 담아서 전송합니다. 이때는 요청 헤더의 Content-Type 에 요청 데이터의 타입을 표시해야합니다. 그렇지 않으면 서버는 내용이나 URL 에 포함된 리소스의 확장자명 등으로 데이터 타입을 알아서 유추해야합니다.

그리고 GET 요청은 멱등성을 띄지만, POST 요청은 멱등성을 띄지 않습니다. 멱득성이란 여러번 적용하더라도 결과가 달라지지 않는 것을 말합니다. (GET 요청으로 조회를 여러번 하더라도 응답은 항상 똑같을 것이고, 반대로 POST 요청은 새로 생성 혹은 수정되기 때문에 응답값이 변경될 수 있습니다.)

(요청의 특징, HTTP 메시지 body, 멱등성)


4. HTTP의 PUT, PATCH를 비교 설명해주세요.
PUT 과 PATCH 요청은 기존에 존재하는 리소스에 대해 업데이트를 요청합니다.
허나 PUT 요청시 존재하는 리소스의 대한 모든 정보에 대해 업데이트를 요청해야하고 빠진 데이터를 포함하지 않는다면 그 데이터는 null 로 수정됩니다. 추가로 없던 리소스에 요청을 보내면 새로운 자원을 생성합니다. 반대로 PATCH 요청은 부분적인 수정만이 가능합니다.
멱등성면에서도 PUT 은 멱등성을 가지지만 PATCH 는 멱등성을 가지지 않습니다.
(⭐️ 멱등성 추가!)


5. ⭐ HTTP의 Status Code에 대해 설명해주세요.
상태코드란 클라이언트가 서버에 HTTP 요청을 보낸 후에 서버의 응답코드를 말합니다. 상태코드에 따라 요청의 성공, 실패 여부를 판단할 수 있습니다.

첫번째 숫자에 따라 크게 5가지로 분류됩니다. 100번대는 조건부 응답으로 요청이 수신되어 처리 중을 의미합니다. 200번대는 요청이 정상적으로 처리했음을 의미합니다. 300번대는 리다이렉션 완료로 요청 완료를 위해 추가 작업 조치가 필요함을 의미합니다. 400번대는 클라이언트 오류에 의해 서버가 요청을 처리할 수 없음을 의미합니다. 500번대는 서버 요류로 인해 서버가 정상 요청을 처리하지 못함을 의미합니다.

(https://velog.io/@sangyeon217/http-status-code)


6. ⭐ HTTP와 HTTPS의 차이점에 대해 설명해주세요.
HTTP 는 HTML 문서를 주고 받는 통신 규약입니다. 단순하게 서버와 공개적인 정보를 주고 받기에는 아무 문제가 없지만 아주 중요한 문서를 주고 받을 경우에는 보안이 취약하다는 단점이 있습니다. 이를 해결하기 위해 HTTPS 가 등장했습니다. HTTPS 는 HTTP 와 다르게 전송 내용을 암호화시키면서 발신자와 수신자 외 중간 매개체에서 내용을 확인할 수 없기 때문에 보호할 수 있습니다. 암호화는 SSL 혹은 TLS 인증을 통해 이루어집니다.


7. HTTPS의 동작 방식에 대해 설명해주세요.
(https://velog.io/@averycode/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTP%EC%99%80-HTTPS-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95)
(https://velog.io/@alscjf6315/HTTPS-%EC%9D%98-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC)

공개키 암호화 방식과 대칭키 암호화 방식을 활용해 하이브리드로 사용합니다.
데이터를 대칭키 방식으로 암복호화하고 공개키 방식으로 대칭키를 전달합니다.
먼저, 클라이언트가 서버에 접속하여 핸드세이킹 과정을 통해 서로를 탐색합니다. 핸드 쉐이킹과정에서 인증을 확인합니다. 서로의 인증이 확인된다면 서버와 클라이언트는 세션키를 활용하여 데이터를 암복호화하여 데이터를 송수신합니다. 그 후 연결이 종료가 되면 세션 키는 폐기됩니다.


8. TCP와 UDP를 비교 설명해주세요.
두 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되어 있는 전송계층의 프로토콜입니다. TCP 는 Transmission Control Protocol 의 약자로 , UDP 는 User Datagram Protocl 의 약자입니다. TCP는 신뢰성 있는 데이터 전송을 3 way handshaking 을 지원하는 연결 지향형 프로토콜이기 때문에 데이터 처리속도 차이를 조절하는 흐림제어와 패킷 수가 넘치지 않게 방지하는 혼잡 제어를 지원하며 데이터의 순서를 보장할 수 있습니다. 반면에, UDP 는 데이터그램을 단위로 데이터를 주고 받는데 주고받을 떄 신호 절차를 거치지 않고 일방적으로 전달하는 비연결 프로토콜입니다. 연결 설정이 없어 혼잡제어를 하지 않아서 속도가 빠르지만 전송에 대해 보장하지 않아서 비신뢰성을 지니고 패킷 손실이 발생할 수 있습니다.


9. TCP가 신뢰성을 보장하는 방법에 대해 설명해주세요.


10. TCP의 3-Way-Handshake와 4-Way-Handshake에 대해 설명해주세요.
TCP 에서 데이터 전송시 클라이언트에서 서버로 3 way handshake 과정으로 연결을 설정하고 4 way handshake 를 통해 해제합니다.

(https://velog.io/@averycode/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-TCPUDP%EC%99%80-3-Way-Handshake4-Way-Handshake)

0개의 댓글