네트워크 정리

Seokwon Han·2021년 2월 2일
0

CS 지식 정리

목록 보기
5/6

웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일

  1. 웹브라우저가 URL을 해석하여 host부분을 인코딩합니다. HSTS 리스트를 확인하여 있으면 HTTPS로, 없으면 HTTP로 요청합니다.
  2. DNS를 조회하기 위해 브라우저와 로컬의 캐시를 확인하여 도메인에 해당하는 IP주소가 있는지 확인합니다. 없다면 OS에게 DNS서버에 요청하라고 지시하고 DNS서버로부터 도메인에 해당하는 IP주소를 받습니다.(도메인 서버 과정: 루트도메인서버 -> .com도메인서버 -> google.com도메인서버)
  3. TCP 소켓을 열고 3-way handshake로 연결을 설정합니다. HTTPS 요청이라면 TLS handshake 과정을 거칩니다..(3-way handshake, TLS handshake 내용 참고)(OSI7계층 연관지은 내용 참고?)
  4. 세션이 유지되는 동안 서버에게 요청하고 응답받는 과정을 반복합니다. (google.com의 경우 처음 HTML을 받은뒤에 HTML에서 참조하는 모든 리소스에 대해 요청과 응답을 반복합니다.)
    이 때 요청과 응답은 모두 HTTP 프로토콜을 사용하여 메시지를 생성합니다. (HTTP프로토콜 관련 내용 참고)
  5. 웹브라우저는 응답받은 리소스를 사용하여 페이지를 랜더링합니다.
  6. 서버와의 연결 종료 시 4-way handshake로 연결을 종료합니다.

TCP 3, 4 way handshake에 대해서 설명해보세요.

TCP 3way handshake는 상대방 컴퓨터와 세션을 수립하는 과정입니다. 클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지를 서로 SYN,ACK 패킷을 주고받으며 확인하는 과정입니다.
(1. 클라이언트는 서버에 SYN을 보내고 SYN/ACK응답을 기다립니다.
2. 서버는 SYN요청을 받고 클라이언트에게 SYN와 ACK flag가 설정된 패킷을 발송한뒤 ACK응답을 기다립니다.
3. 클라이언트는 서버에게 ACK를 보내고 이후부터는 연결이 이루어지고 데이터가 오가게됩니다.)
TCP 4way handshake는 세션을 종료하기 위한 과정입니다. 클라이언트는 서버에게 연결해제를 통지하고 서버가 이를 확인하고 클라이언트에게 이를 받았음을 전송해주고 최종적으로 연결이 해제됩니다. 서버에서 소켓이 닫혔다고 통지해도 클라이언트 측에서는 일정시간 대기하는데, 이는 혹시나 패킷이 지연되어 나중에 도착할 수 있기 때문입니다.
(1. 클라이언트는 서버에게 연결을 종료하겠다는 FIN플래그를 보냅니다.
2. 서버는 일단 확인메세지를 보내고 자신의 통신이 끝날때까지 기다립니다.
3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 보냅니다.
4. 클라이언트는 확인메세지를 보냅니다.)

HTTP와 HTTPS의 차이점에 대해서 설명해보세요.

HTTP는 평문데이터를 전송하는 프로토콜이기 때문에 개인정보를 주고받으면 제3자에 의해 조회될 수 있습니다. 이런 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다.

HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명해보세요.

HTTP는 평문데이터를 전송하는 프로토콜이기 때문에 개인정보를 주고받으면 제3자에 의해 조회될 수 있습니다. 이런 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다.
HTTPS는 제3자인증, 공개키 암호화, 비밀키 암호화를 사용합니다.
(1. 클라이언트는 TCP 3way handshake를 수행한 뒤 Client Hello를 전송하면 서버는 인증서를 보냅니다.
2. 클라이언트는 받은 인증서를 신뢰하기 위해서 개인키로 암호화된 인증서를 공개키로 복호화하여 검증합니다.
3. 클라이언트는 통신에 사용할 비밀키를 공개키로 암호화하여 서버에 보냅니다. 서버는 이를 개인키로 확인하고 이후 통신은 공유된 비밀키를 사용합니다.)

공개키 암호화와 비밀키 암호화를 복합적으로 쓰는 이유?

공개키 암호화 방식은 비밀키 암호화 방식에 비해 속도가 느리기 때문입니다. 따라서 공개키 암호화는 비밀키를 공유하기 위해 사용하고 이후 통신은 공유된 비밀키를 사용합니다.

TCP와 UDP의 차이점에 대해서 설명해보세요.

TCP는 연결형 서비스로 3way handshaking을 통해 연결을 설정합니다. 때문에 신뢰성이 높지만 속도는 비교적 느립니다. UDP는 비연결형 서비스이기 때문에 신뢰성이 낮지만 속도가 빠릅니다. TCP는 파일전송과 같은 신뢰성이 중요한 서비스에 사용되고 UDP는 실시간성이 중요한 스트리밍에 자주 사용됩니다.
 GET과 POST의 차이점에 대해서 설명해보세요.
GET은 데이터를 조회하기 위해 사용하는 방식으로 요청에 필요한 정보를 URL에 추가하여 전송합니다. URL에 데이터가 노출되기 때문에 보안적으로 중요한 데이터를 포함해서는 안됩니다.
POST는 데이터를 생성하기 위해 사용하는 방식으로 데이터를 HTTP 메시지의 Body에 담아서 전송합니다. Body는 길이의 제한이 없으므로 GET과 달리 대용량의 데이터를 전송할 수 있습니다. 완전히 안전하지는 않지만 URL에 데이터가 노출되는 GET보다는 안전합니다.

HTTP 메서드와 이것이 하는 역할에 대해서 설명해보세요.

GET은 데이터를 조회하기 위해 사용하는 방식으로 요청에 필요한 정보를 URL에 추가하여 전송합니다.
POST는 데이터의 생성하기 위해 사용하는 방식으로 데이터를 HTTP 메시지의 Body에 담아서 전송합니다.
PUT은 데이터의 수정을 요청합니다.
DELETE는 데이터의 제거를 요청합니다.
PATCH는 데이터의 일부를 수정하는 것을 요청합니다.
HEAD는 GET과 유사하지만 Body없이 헤더만 요청합니다. 웹서버의 정보를 확인하는데 사용합니다.
OPTIONS는 endpoint가 허용하는 메소드목록을 조회합니다.
TRACE는 루프백 테스트를 통해 요청이 수신되는 경로를 보여줍니다.

RESTful이란 무엇이며, 이것에 대해서 아는대로 설명해보세요.(보충필요)

먼저 REST란 HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 URI와 Method로 표현하여 특정한 형태로 전달하는 것을 의미하고, RESTful이란 REST의 원리를 따르는 시스템을 뜻합니다.
REST API의 설계규칙으로는 URI는 행위가 아닌 자원을 표현해야 하며 슬래시로 계층을 구분합니다. 또한 소문자를 사용해야 하며 언더바는 사용하지 않아야합니다. 자원에 대한 행위는 HTTP 메소드인 GET PUT POST DELETE 등으로 표현합니다.
REST의 장점은 HTTP를 사용하기 때문에 별도의 인프라 구축이 필요가 없습니다. 단점은 명확한 표준이 존재하지 않고 RESTful을 완전히 만족하는 API를 만들기가 어렵다는것입니다.

SOAP란?

작성중…

CORS란 무엇이며 이것에 대해서 설명해보세요.

CORS란 서로 다른 도메인간에 자원을 공유하는 것을 뜻합니다. 대부분의 브라우저에서는 보안상의 이유로 이것을 기본적으로 차단합니다.
CORS를 허용하기 위해서는 서버의 응답헤더에 Access-Control-Allow-Origin을 설정하여 응답합니다. 브라우저에서는 이를 자신이 보냈던 Origin과 비교하여 허용된 출저인지 확인하고 응답을 사용합니다.
브라우저는 CORS정책의 위반여부를 판단하기 위해 요청을 한번에 보내지않고 예비요청과 본요청으로 나누어서 보내는 preflight방식을 사용합니다. 예비요청에는 OPTIONS 메소드를 사용하여 요청의 유효성을 검사하고 난 뒤에 본 요청을 보냅니다.

OSI7계층과 그 존재 이유, TCP/IP 4계층에 대해 설명해보세요.

OSI7계층은 네트워크 통신을 구성하는 요소를 7개의 계층으로 표준화한것입니다. OSI7계층을 통하여 통신이 일어나는 과정을 단계별로 파악할 수 있고, 문제가 발생하면 해당 문제를 해결하기 용이해집니다.
(7계층은 응용 계층으로 사용자와 직접 상호작용하는 응용프로그램들이 포함된계층입니다.
6계층은 표현계층으로 데이터를 압축하거나 암호화하는 계층입니다.
5계층은 세션계층으로 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층입니다.
4계층은 전송계층으로 데이터의 전송을 담당합니다. TCP와 UDP등의 프로토콜을 사용합니다.
3계층은 네트워크 계층으로 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층입니다. IP, ARP, RARP등의 프로토콜을 사용합니다.
2계층은 데이터링크 계층으로 데이터의 물리적 전송과 에러검출 흐름제어를 담당합니다.
1계층은 물리계층으로 데이터를 전기신호로 바꾸어주는 계층입니다.)

TCP/IP 4계층은 OSI7계층을 기반으로 실제로 통신에 사용할수 있도록 단순화한것입니다. 1,2계층이 1계층, 5,6,7계층이 4계층으로 운영되고, 네트워크 엑세스, 인터넷, 전송, 응용계층으로 나뉩니다.

TCP/IP란?

TCP/IP란 데이터가 의도된 목적지에 닿을수 있도록 보장해주는 통신규약으로 TCP 와 IP 두가지 프로토콜로 이루어져있습니다. TCP는 데이터의 흐름을 제어할 수는 있지만 데이터가 전송되어야 할 경로에 대한 규약은 아니기 때문에 경로에 대한 규약인 IP를 함께 사용합니다. 이 둘은 기본적으로 함께 사용되므로 TCP/IP라고 표기합니다.
(TCP는 연결형 서비스로 데이터를 신뢰성있게 전달하기 위한 프로토콜입니다. 전달받은 패킷을 재조립하거나 손상된 패킷을 재전송받습니다.
IP는 인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기 위한 규약입니다.)

profile
개발하면서 새로 배우거나 경험한 내용을 정리하고 그 외의 공부한 내용을 기록하는 곳입니다.

0개의 댓글