# HSH - Network 답변
###### tags: `Network 답변`
## 황 성현
----
### OSI 7계층 구조와 계층화 시킨 이유에 대해 설명하시오.
* 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다.
* 물리, 데이터링크, 네트워크 전송, 세션, 표현, 응용 계층으로 나누어 집니다.
* 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있으며 이상이 생길 경우 해당 계층에서 보수가 쉽기 때문입니다.
### TCP/IP 계층이란?
* 현재 수많은 프로그램들이 인터넷으로 통신하는데에 있어 가장 기반이 되는 프로토콜로 실제 대다수 프로그램은 TCP와 IP로 통신하고 있습니다. 응용, 전송, 인터넷, 네트워크 계층으로 이루어져 있습니다.
* IP(네트워크 계층) 는 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할을 하며, TCP(전송 계층) 은 전체 데이터가 잘 전송될 수 있도록 데이터의 흐름을 조절하고 성공적으로 상대편 컴퓨터에 도착할 수 있도록 보장해주는 역할을 합니다.
### TCP와 UDP의 차이점에 대해 설명하시오.
* TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜이며, UDP는 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만, 신뢰성있는 데이터 전송을 보장하지는 않습니다.
### 혼잡제어와 흐름제어에 대해 설명하시오.
* 흐름제어 : 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법입니다.
* 수신측이 송신측보다 빠르면 문제없지만, 송신측의 속도가 빠를 경우 문제가 생깁니다. -> 재전송으로 인한 자원 낭비
* 혼잡제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법입니다.
* 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송속도를 강제로 줄이게 되는데, 이러한 작업을 혼잡제어라 합니다.
### TCP 연결과 연결 종료 과정에 대해 설명하고 차이가 나는 이유
* 4-way handshake 과정으로 연결을 종료하게 됩니다. 먼저 클라이언트는 서버에게 연결을 종료한다는 FIN 패킷과 서버는 패킷을 확인했다는 ACK 패킷을 클라이언트에게 전송합니다. 그 후 서버가 통신이 끝났으면 연결이 종료되었다는 FIN 패킷을 클라이언트 측에 전송하고 클라이언트는 패킷을 확인했다는 ACK 패킷을 전송하는 메세지를 보냅니다.
* 연결 과정과 한 단계가 차이나는 이유는 Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 FIN에 대한 ACK만 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 때문이다.
### TCP 패킷의 Initial Sequence Number를 난수로 생성하는 이유
* 0으로 시작하는 ISN은 쉽게 예측되므로 보안에 취약해지는 이유가 있습니다. 또한 다른 사용자와 같은 포트를 사용하고 있을 때 패킷을 착각할 수 있는 경우가 생겨 난수로 ISN을 초기화 합니다. +) ~Seq ack 넘버는 정렬된 바이트 스트림으로 설정된다.~
### HTTP와 특징에 대해 설명하시오.
* HTTP는 응용 계층에서 사용하는 프로토콜로 인터넷에서 데이터를 주고받을 수 있는 프로토콜 입니다.
* HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜입니다. 그렇기 때문에 요청/응답 방식으로 동작합니다. 또한 연결을 끊는 순간 클라이언트와 서버의 상태 정보를 유지하지 않습니다.
### Internet이란 무엇인가?
* TCP/IP 기반의 네트워크가 전세계적으로 확대되어 하나의 연결된 네트워크들의 네트워크 (네트워크의 결합체)
### HTTP의 단점과 그것을 극복하기 위한 기술 한가지를 설명하시오.
* 세션, 쿠키 : HTTP의 비연결성과 비상태성을 보완하여 서버가 클라이언트를 식별하게 해주는 기술입니다.
* HTTPS : 기존 HTTP에 데이터 암호화를 추가한 기술로 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 보안성을 제공합니다.
### HTTPS에서 공개키와 개인키를 아는데로 설명하시오.
* HTTPS는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화합니다.
* 공개키는 말 그대로 모두에게 공개 가능한 키이고 개인키는 나만 가지고 알고 있어야 하는 키입니다.
* 공개키로 암호화를 하게 되면 개인키로만 복호화할 수 있으므로 한명의 유저에게 보안성이 보장된 데이터를 보낼 수 있습니다. 개인키로 암호화하게 되면 공개키로만 복호화 할 수 있고 공개키는 모두에게 공개되어 있으므로 내가 인증한 정보임을 알려 신뢰성을 보장 할 수 있습니다.
### Restful API란 무엇인가?
* Restful API는 REST 특징을 지키면서 API를 제공하는 것을 의미합니다.
* REST란, “웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용”하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다.
### 서버에 대한 이름을 ip주소로 변환하여 사용자에게 알려주는 시스템을 무엇이라 하는가?
* DNS (Domain name system)
### 로드밸런싱이란?
* 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 로드 밸런싱입니다.
* 클라이언트와 서버 사이에서 부하가 일어나지 않도록 여러 서버로 부하를 분산시켜주는 방식입니다.
### Blocking 모델과 Non-Blocking 모델의 차이
* 네트워크 통신에서 소켓 통신 방식을 말하는데 Blocking 모델은 I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단한 채 대기하는 방식이고 반면에 Non-Blocking 모델은 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식이다. 오랜 시간 작업을 중지하지 않아도 되는 장점이 있지만 반복적으로 시스템 호출을 하기 때문에 자원을 낭비하는 단점이 있다.
### CORS가 필요한 이유
* 추가적인 HTTP header를 사용해서 애플리케이션이 다른 origin의 리소스에 접근할 수 있도록 하는 메커니즘을 말하지만, 다른 origin에서 내 리소스에 함부로 접근하지 못하게 하기 위해 사용된다.
* 만약 내가 사용하고 있지 않은 사이트에서 세션을 요청해서 세션을 획득할 수 있다면 해당 사이트는 악의적으로 내 세션을 탈취하거나 다른 행동을 할 수 있습니다. 그래서 브라우저에서는 이러한 요청을 막습니다.
* [https://bigzero37.tistory.com/60](https://bigzero37.tistory.com/60)
### 웹소켓이란?
* WebSocket은 서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술이다.
### IPv4와 IPv6의 주소 길이는?
* 32 bit & 128 bit
### SPA에 대해 설명하시오.
* 싱글 페이지 어플리케이션(SPA), 기존 웹 서비스는 요청시마다 서버로부터 리소스들과 데이터를 해석하고 화면에 렌더링하지만 SPA는 최초에 한번 페이지 전체를 로드하고 특정 부분만 Ajax를 통해 데이터를 업데이트하는 방식입니다.
### AJax란 무엇인가?
* 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 이며 JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML 데이터를 주고받는 기술이다.
### JWT(JSON WEB TOKEN)란 무엇인가?
* access token을 생성하는 방법 중 가장 널리 사용되는 기술 중 하나가 바로 JWT(JSON Web Tokens)이다. JWT는 말 그대로 json 데이터를 token으로 변환하는 방식이다