-
네트워크(Computer Network) 정리취업 활동/면접 준비 2021. 1. 1. 15:49728x90
네트워크
- GET과 POST 비교
둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청하는 방식입니다.
GET 방식은 요청하는 데이터가 HTTP 메시지 header 부분의 url에 담겨서 전송되고, POST 방식은 요청하는 데이터가 HTTP 메시지 body 부분에 담겨서 전송됩니다. GET 방식은 서버에서 어떤 값을 조회할 때 사용되고, POST 방식은 서버에 값을 추가하여 값의 변화가 있을 때 사용됩니다. 추가적으로 GET 방식의 경우에는 브라우저에서 caching을 할 수 있습니다.
- TCP와 UDP 비교
TCP는 reliable 한 protocol 이므로, 신뢰성 있는 통신을 합니다. 여기서 신뢰성이 있다는 것은 순차적 전달을 하고, 지연과 손실이 발생하지 않도록 데이터를 전송하며, 발생한다면 이를 해결할 수 있는 매커니즘이 존재하는 것입니다. congestion control 등을 지원합니다. 신뢰성 있는 통신을 위해 TCP에서는 연결 설정이 필요하며, 3-way handshake를 통해 행해집니다.
- TCP 3-way handshake / 4-way handshake
3-way handshake는 신뢰성 있는 통신을 위한 연결을 설정하는 과정입니다.
1. 클라이언트가 SYN 패킷을 서버에 전송
2. 서버는 SYN 패킷을 받고, ACK과 SYN 패킷을 전송
3. 클라이언트는 ACK과 SYN을 받고, 이에 대한 응답으로 ACK을 전송
TCP는 양방향성 연결이기 때문에 클라이언트에서 서버에게 자신의 존재를 알리고 패킷을 보낼 수 있는 것처럼 서버에서도 클라이언트에게 자신의 존재를 알리고 패킷을 보낼 수 있다는 신호를 보내야하기 때문에 2-way가 아닌 3-way를 합니다.
4-way handshake는 연결을 해제하는 과정입니다.
1. 클라이언트는 서버에게 연결을 종료하겠다는 FIN 패킷을 전송
2. 서버는 이에 대한 응답으로 ACK 패킷을 전송
3. (처리해야 할 모든 통신을 끝마쳤다면...) 서버는 연결을 종료하겠다는 FIN 패킷을 전송
4. 클라이언트는 이에 대한 응답으로 ACK 패킷을 전송하며, 아직 서버로부터 전송되지 않은 데이터를 받을 수 있기 때문에 TIME_WAIT 상태가 됨
5. 서버는 ACK 패킷을 받고, 소켓 연결을 close 함
- HTTP와 HTTPS
HTTP는 웹 상에서 서버와 클라이언트가 데이터를 주고 받기 위한 프로토콜입니다. HTTP는 평문 전송으로 보안이 적용되지 않습니다. HTTPS는 HTTP에 SSL프로토콜을 적용한 것입니다. 따라서 HTTPS는 보안 기능이 있습니다.
HTTP는 TCP와 직접적으로 통신을 하지만, HTTPS에서 HTTP는 SSL과 통신하고, SSL이 TCP와 통신합니다.
- HTTP1.1 / HTTP2
HTTP1.1은 기본적으로 한 connection당 하나의 요청과 응답을 처리합니다. 따라서 동시 전송 문제와 다수의 리소스를 처리하기에 속도와 성능 이슈를 가지고 있습니다. 구체적으로 HOL, RTT 증가 등의 문제가 있습니다.
HTTP2는 이러한 문제들을 해결합니다. 기본적으로 한 connection에 여러개의 메시지를 동시에 주고 받을 수 있습니다. 또한 HTML 문서상에 필요한 리소스를 클라이언트의 요청 없이 전달해, 불필요한 요청을 줄일 수 있습니다.
- 웹 통신의 큰 흐름 (중요)
브라우저에서 "www.naver.com " 값을 입력하면 어떤 일이 벌어질까?
1. 브라우저는 입력된 url을 파싱하여, HTTP request 메시지를 만듭니다.
2. 로컬 PC의 hosts파일과 브라우저 캐시를 확인하여 입력한 도메인의 맵핑정보가 있는지 확인합니다. (있으면 DNS 쿼리를 생략)
3. DHCP 서버로부터 사용자 자신의 IP주소, 가장 가까운 라우터의 IP주소, 가장 가까운 DNS서버의 IP주소를 받습니다.
4. ARP 프로토콜을 이용하여 IP주소를 기반으로 가장 가까운 라우터의 MAC 주소를 알아냅니다.
5. DNS 쿼리를 DNS 서버에 송신하여, 웹 서버의 IP주소를 받습니다.
5-1) 구체적으로.. Root 네임서버 -> .com 네임서버 -> naver.com 네임서버를 거쳐서 IP주소를 수신하게 됩니다.
6. TCP 소켓을 개방하고, 3-way handshaking을 통해 연결합니다.
7. TCP 연결에 성공하면, HTTP Request가 TCP 소켓을 통해 보내지고, 응답으로 리소스를 받습니다.
8. 브라우저는 요청 받은 리소스를 구문 분석, DOM 트리 생성, 렌더링 등 과정을 거쳐 화면에 표시한다.
- REST & RESTful
REST란 Representational State Transfer의 약자로 웹의 장점을 최대한 활용할 수 있는 Client와 Server 간 통신 방식 중 하나입니다. REST의 설계 기본 규칙으로 HTTP URI를 통해 자원을 명시하고, HTTP Method(GET, POST, PUT, DEL)를 통해 자원을 처리하도록 설계된 아키텍처입니다. 여기에 더해 응답문이 자기 스스로를 설명할 수 있어야 한다는 self-descriptive message와 응답 메시지에 응답과 관련된 하이퍼링크 정보를 함께 전달해야 한다는 HATEOAS를 적용해야 합니다.
RESTful이란 이러한 REST의 원리를 따르는 시스템을 지칭합니다.
728x90'취업 활동 > 면접 준비' 카테고리의 다른 글
웹(Web) 정리 (0) 2021.01.01 프로그래밍 언어(Java) 정리 (0) 2021.01.01 데이터베이스(Database) 정리 (0) 2021.01.01 운영체제(Operating System) 정리 (0) 2021.01.01 알고리즘(Algorithm) 정리 (0) 2021.01.01