# kmg Network 답변
###### tags: `Network 답변`
## 01-1. Core of Network
## 추가해야할 것
- [ ] MAC주소와 IP주소
- [ ] 서브네팅과 서브넷 주소
- [ ] 방화벽
## OSI 7 layers와 TCP/IP 4 layers
#### 💡 프로토콜이란?
서로 다른 기기들 간의 데이터 교환을 위해 표준화한 통신 규약입니다. 프로토콜의 기능에는 흐름제어, 오류제어, 순서제어 등이 있습니다.
* __흐름제어__ 는 수신측에서 송신측이 송신하는 데이터의 전송량이나 전송 속도를 조절하는 기능입니다.
이 때, 정지 대기 방식과 슬라이딩 윈도우 방식을 사용합니다.
* __오류제어__ 는 전송중에 발생하는 오류를 검출하고 정정하여 정보의 파손에 대비하는 기능입니다.
* __순서제어__ 는 데이터 블록에 전송 순서를 부여하는 기능입니다.
송신 데이터들이 순서적으로 전송되도록 함으로써 흐름제어 및 오류제어를 용이하게 합니다.
#### 💡 패킷이란?
* 3계층인 네트워크 계층에서 교환되는 정보의 단위입니다.
패킷에는 번호가 붙여지고, 목적지 주소와 오류검출 비트가 포함됩니다.
#### 💡 OSI 7 Layer와 각 계층에 대한 설명을 해주세요.
OSI 7 계층은 국제 표준 기관 ISO가 통신 접속부터 완료까지의 과정을 총 7단계로 정의한 국제 통신 표준 모델입니다.
OSI 7 계층은 Physical, Data Link, Network, Transport, Session, Presentation, Application으로 구성되어 있습니다.
* 물리계층은 데이터를 전기신호로 바꿔주는 계층입니다.
* 데이터링크 계층은 MAC 주소를 가지고 통신하는 계층입니다. 오류검출과 흐름제어를 통해 데이터가 안전하게 도달하도록 합니다.
* 네트워크 계층은 IP주소를 이용해서 최적의 경로를 제공합니다.
* 전송계층은 데이터 전송을 위한 논리적인 연결합니다.
* 표현계층은 서로 다른 Application들이 data를 이해할 수 있도록 도와주는 계층입니다. 데이타의 압축, 암호화, JPEG포맷 등을 수행합니다.
#### 💡 TCP/IP Layer와 각 계층에 대한 설명을 해주세요.
[kmg]
TCP/IP는 네트워크 액세스 계층, 인터넷 게층, 전송계층, 응용 계층으로 이루어져 있습니다.
네트워크 액세스 계층 은 실제 데이터를 송수신하는 역할입니다.
인터넷 계층 은 데이터 전송을 위한 주소지정, 경로설정을 제공합니다.
전송 계층 은 호스트들 간의 신뢰성 있는 통신을 제공합니다.
응용 계층 은 응용 프로그램 간의 데이터 송수신을 제공합니다.
* [hsh]현재 수많은 프로그램들이 인터넷으로 통신하는데에 있어 가장 기반이 되는 프로토콜로 실제 대다수 프로그램은 TCP와 IP로 통신하고 있습니다. 응용, 전송, 인터넷, 네트워크
* [hsh]IP(네트워크 계층) 는 데이터를 한 장소에서 다른 장소로 정확하게 옮겨주는 역할을 하며, TCP(전송 계층) 은 전체 데이터가 잘 전송될 수 있도록 데이터의 흐름을 조절하고 성공적으로 상대편 컴퓨터에 도착할 수 있도록 보장해주는 역할을 합니다.
*
#### 💡 OSI 7 Layer 또는 TCP/IP Layer에서 계층화하는 이유가 무엇인가요?
* [hsh]계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있으며 이상이 생길 경우 해당 계층에서 보수가 쉽기 때문입니다.
#### 💡 Encapsulation과 Decapsulation을 서로 비교하며 설명해주세요
#### 💡 IP란?
#### 💡 IP 주소란?
#### 💡 IPV4 vs IPV6 을 설명해주세요.
#### 💡 IPv4의 주소 부족현상을 해결하기 위해 현재 어떤 방법을 사용하고 있나요?
## TCP와 UDP
#### 🐸 외우기 꿀팁 대방출
- TCP 연결형/신뢰성/흐름제어
- UDP 비연결형/비신뢰성/속도빠름
#### 💡 TCP와 UDP의 특징과 차이점을 설명해주세요.
* [phb]TCP는 연결형 서비스로 신뢰성을 보장합니다. 신뢰성 보장을 위해 오류제어, 흐름제어, 혼잡제어를 제공합니다.
* [phb]UDP는 비연결형 서비스로 비신뢰적이지만 속도가 빨라서 실시간 스트리밍에 사용됩니다.
#### 💡 TCP를 사용하는 대표적인 프로토콜은 무엇인가요?
* [phb]HTTP가 있습니다.
#### 💡 3-Handshaking과 4-Handshaking의 과정을 설명해주세요.
* [phb]3-Handshaking 클라이언트가 서버에게 연결 요청. 서버는 클라이언트에게 확인 및 승낙 ACK+SYN 패킷 전송. 클라이언트는 확인 ACK 전달하고 연결.
* [phb]4-Handsahking 클라이언트가 서버에게 종료 요청. 서버는 확인 ACK 전달. 데이터 전송 완료 후 클라이언트에게 FIN 전달. 클라이언트는 서버에게 확인 ACK전송 후 연결 종료
#### 💡 3-way handshaking 과정에서 클라이언트가 서버가 보낸 ACK+SYN을 받지 못하면?
#### 💡 클라이언트와 서버는 무엇인가요?
#### 💡 4-way handshaking 과정에서 서버가 마지막에 FIN을 보내는 이유?
* [phb]송수신이 끝나지 않은 데이터가 존재할 수 있어 이 데이터를 다 받고나서 종료하기 위해
#### 💡 4-way handshaking 과정에서 클라이언트가 마지막에 ACK를 굳이 보내는 이유?
#### 💡 만약 Server에서 FIN 세그먼트를 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면 어떻게 될까?
#### 💡 TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유?
#### 💡 초기 Sequence Number인 ISN을 0부터 시작하지 않고 난수를 생성해서 설정하는 이유?
* [hsh]0으로 시작하는 ISN은 쉽게 예측되므로 보안에 취약해지는 이유가 있습니다. 또한 다른 사용자와 같은 포트를 사용하고 있을 때 패킷을 착각할 수 있는 경우가 생겨 난수로 ISN을 초기화 합니다. +) ~Seq ack 넘버는 정렬된 바이트 스트림으로 설정된다.~
#### 💡 UDP에서 신뢰도를 보장하는 방법을 설명해주세요.
* [phb]RUDP
## HTTP와 HTTPS
#### 💡 HTTP와 HTTPS를 설명해주세요
* [phb] HTTP는 인터넷 상에서 정보를 주고 받을 수 있는 프로토콜.
* [phb] HTTPS는 HTTP에 보안이 추가된 것
#### 💡 HTTP의 단점을 설명해주세요
* [phb] 보안 취약
#### 💡 HTTP1.1와 HTTP2.0 차이점은 무엇인가요?
* [phb] HTTP 1.1은 하나의 연결에 하나의 요청-응답만 가능
* [phb] HTTP 2.0은 하나의 연결에 여러개의 요청-응답 가능
#### 💡 HTTP는 왜 비연결성인가?
* [phb] 연결에 필요한 리소스를 아껴 더 많은 클라이언트와 연결
#### 💡 모든 웹 페이지에서 HTTPS 를 사용하지 않는 이유를 설명해주세요.
* [phb] 모든 곳에 암호화를 사용하면 자원 낭비. 필요한 곳에만 사용
*
#### 💡 대칭키 암호화 방식은 무엇인가요?
#### 💡 비대칭키 또는 공개키 암호화 방식은 무엇인가요?
* [phb] 서버는 공개된 키로 암호화해서 사용자에게 보내면 사용자는 본인만 가지고 있는 개인키로 복화화하여 문서를 볼 수 있도록 암호화하는 방식
#### 💡 HTTP REQUEST 방식 중 GET과 POST의 차이을 설명해주세요.
* [phb] GET은 조회할 때 사용되며 데이터를 헤더에 담아 전달해서 보안적으로 취약
* [phb] POST는 생성할 때 사용되며 데이터를 body에 담아 전달해서 GET보다 보안성이 뛰어남
#### 💡 GET, POST를 제외하고 다른 방식들을 설명해주세요.
* [phb] PUT - update, DELETE - delete
#### 💡 조회하기 위한 용도 POST가 아닌 GET 방식을 사용하는 이유?
* [phb] 서버의 상태가 변경되지 않기 때문
#### 💡 현대 웹 에서는 비연결성을 해결방법을 설명해주세요.
* [phb] 쿠키와 세션으로 정보를 저장
## DNS와 DHCP
#### 💡 도메인과 DNS가 무엇인지 설명해주세요
#### 💡 Domain Name 구조를 설명해주세요.
#### 💡 DNS round robin 방식의 문제점과 해결방법을 설명해주세요.
#### 💡 DHCP 서버의 역할을 간단히 설명해주세요
#### 💡 Domain Name System 과정을 설명해주세요.
## 로드밸런서
#### 💡 로드 밸런싱을 설명해주세요.
* [phb] 서버를 여러대 사용할 때 트래픽이 몰리면 여러 서버에 균등하게 트래픽을 분산 처리하는 기술
#### 💡 L4 로드 밸런싱과 L7 로드 밸런싱에 대해 설명하고, 차이를 말해보세요
#### 💡 게이트웨이란?
#### 💡 서버에 트래픽이 주어졌을 때 어떻게 응답속도를 개선할 수 있는가요
</br>
</br>
## 01-2. Web of Network
## basic
#### 💡 클라이언트와 서버는 무엇인가요?
#### 💡 url과 uri에 대해 각각 설명해주세요
#### 💡 브라우저에 "www.google.com" 입력하면 어떤일이 일어날까요?
## cookie와 session
#### 💡 현대 웹 에서는 비연결성을 해결방법을 설명해주세요. // 위에 있음
#### 💡 cookie와 session에 대해 설명해주세요
* [phb] http 비연결성을 해결하기 위해 정보를 저장함. 세션은 서버에 저장되고 쿠키는 클라이언트 저장소에 저장됨.
#### 💡 Session 동작 순서를 설명해주세요.
#### 💡 cookie를 쓰는 이유를 설명해주세요
* [phb] 세션을 많이 사용하면 서버에 부하가 가기 때문에 쿠키를 사용
#### 💡 Cookie, Session Storage, Local Storage 사이 차이점을 설명해주세요
## RESTful API
#### 💡 RESTful API란 무엇인가요?
Rest를 Rest답게 쓰기 위한 방법입니다.
Restful의 목적은 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것입니다.
Rest란 네트워크 상에서 Client와 Server 가 통신하는 방식입니다. HTTP URI를 통해 자원을 명시하고, HTTP method(Post, Put, Get, Delete)를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미합니다.
#### 💡 GET방식과 POST 방식의 차이점을 설명해보세요 // 위에 동일한 내용있음
#### 💡 GET, POST를 제외하고 다른 방식들을 설명해주세요. // 동일 내용 있음
## AJAX
#### 💡 Ajax는 무엇인가요?
* [phb] js기법 중 하나로 페이지 전체를 새로 고치지 않고 일부 데이터만 로드하는 웹 개발 기법
#### 💡 Ajax의 장점과 단점은 무엇인가요?
* [phb] 고친 부분만 로드하면 됨
* [phb] 요청을 많이하면 서버에 부하. 사용자가 응답을 받지 않아 중간에 나가면 데이터 손실있을 수 있음
## CORS
#### 💡 CORS는 무엇인가요?
CORS란 서로 다른 Origin끼리 자원을 공유할 수 있는 방식입니다.
HTTP 헤더를 사용해서 한 origin에서 실행중인 웹앱이 다른 origin의 자원에 접근할 수 있는 권한을 부여할 수 있는 방식입니다.
서로 다른 Origin이란 것은 Protocol, Host, Port 중 하나라도 다른 것을 의미합니다.
#### 💡 CORS preflight는 무엇인가요?
preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보내는 요청입니다.
OPTIONS 메서드로 요청하며 CORS를 허용하는지 확인합니다. CORS가 허용된 웹서버라면 사용 가능한 리소스를 헤더에 담아 응답합니다.
## Socket
#### 💡 소켓이란 무엇인가요?
* [phb]프로세스가 네트워크를 통해 데이터를 주고 받기 위해 필요한 통로
#### 💡 HTTP와 웹소켓 차이점은 무엇인가요?
#### 💡 웹소켓 (WebScoket)과 TCP/IP 소켓의 차이점은 무엇인가요?
## DOM과 가상DOM
## OAuth2
#### 💡 OAuth2의 동작방식이 어떻게 되나요?
## SPA
## JWT
[뒤로](https://github.com/SSAFY-CS-STUDY/Tech_interview)/[위로](#part-1-3-network)
</br>
</br>
_Network.end_