본문 바로가기

Q&A

3. 네트워크 Q&A

Basics

http://pigbrain.github.io/network/2017/03/08/OSI7_on_Network

1. OSI 7 계층에 대해서 설명해주세요.

OSI 7계층은 '네트워크 통신이 일어나는 과정을 7단계로 나눈 표준 네트워크 모델'입니다.
ISO에서 네트워크간 호환을 위해서 국제 표준 모델을 만든것입니다.
응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터링크 계층, 물리 계층이 있습니다.
1계층인 "물리 계층"은 실제 장치 연결을 위한 전기적/물리적 세부사항을 정의한 계층입니다. 
2계층 "데이터링크 계층"은 물리 계층을 이용해 네트워크 상의 주변 장치들 간의 데이터 전송 역할을 합니다.
쉽게 말하면, 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 
안전한 정보의 전달을 수행할 수 잇도록 도와주는 역할을 합니다.
3계층인 "네트워크 계층"은 여러 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층입니다.
경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 주 역할입니다.
4계층 "전송 계층"은 통신 활성화를 위한 계층으로 대표적으로  TCP, UDP가 있습니다.
포트를 열어 어플리케이션이 데이터를 전송할 수 있도록 하는 역할을 합니다.
5계층 "세션 계층"은 양 끝단의 어플리케이션이 통신을 관리하는 방법을 제공하는 계층입니다.
이 계층의 프로토콜은 통신 연결이 손실되는 경우 연결 복구 시도가 가능하고 
연결 시도중 장시간 연결이 되지 않았다면 세션 계층의 프로토콜이 연결을 닫고 다시 연결을 시도합니다.
6계층 "표현 계층"은 코드간 번역을 담당하는 계층입니다. 인코딩이나 암호화 등의 동작이 이루어집니다.
7계층 "어플리케이션 계층"은 웹 상에서 웹 서버 및 웹브라우저 상호 간의 데이터 전송을 위한 응용계층 프로토콜로 
사용자와 직접적으로 상호작용합니다.


+ 추가 답변 :
물리 계층에서는 단지 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐입니다. 
4계층인 전송 계층에서는 데이터가 왔다면 4계층에서 해당 데이터를 하나로 통합하여 5계층으로 전달합니다.
5계층인 세션 계층에는 중요한 기능인 동기화가 있습니다. 먼저 전이중 통신(Full Duplex)는 두대의 단말기가 데이터를 송수신하기 위해 
동시에 각각 독립된 회선을 사용하는 통신 방식입니다. 대표적으로 전화망, 고속 데이터 통신이 있습니다.
두번째로 반이중 동신(Half Duplex)는 한쪽이 송신하는 동안 다른 쪽에서 수신하는 통신 방식으로 전송 방향을 교체합니다.
마스터 슬레이브 방식의 센서 네트워크가 대표적입니다.

3. TCP/IP 4계층에 대해서 설명해주세요.

프로그램이 인터넷으로 통신하기 위해 기반이 되는 프로토콜입니다.
1계층은 "네트워크액세스 계층"으로 물리계층과 데이터링크 계층에 해당됩니다.
물리 주소로 MAC을 사용하고 LAN/패킷망 등에서 사용됩니다.
2계층 "인터넷 계층"은 OSI 7계층의 네트워크 계층에 해당됩니다. 통신 노드간 IP 패킷 전송 기능과 라우팅 기능을 담당합니다. 
대표적으로 IP, ARP 프로토콜이 있습니다.
3계층 "전송 계층"은 OSI 7계층의 전송 계층에 해당됩니다. 통신 노드간 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당합니다.
대표적으로 TCP / UDP 프로토콜이 있습니다.
4계층 응용 계층은 OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당됩니다. TCP/UDP 기반의 응용 프로그램을 구현할 때 사용합니다.
대표적인 프로토콜로는 HTTP와 SSH가 있습니다.

* 신뢰성있는 데이터 전송 : 포트 번호에 해당되는 프로세스 사이에 전달되는 데이터가 "유실되지 앟고" 전달되도록 하는 것을 의미합니다. 

4. OSI 7계층과 TCP/IP 4 계층의 차이를 설명해주세요.

TCP/IP 계층과 달리 OSI 계층은 애플리케이션 계층을 3개로 쪼개고 링크 계층을 데이터링크 계층, 물리 계층으로 나눠서 설명합니다.
또한 인터넷 계층을 네트워크 계층으로 부른다는 점이 다릅니다.

5. DNS가 무엇인가요?

Domain Name System은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대로 변환하는 역할을 합니다. 
사람이 이해하기 쉬운 도메인 이름을 IP 주소로 변환하고 라우팅 정보를 제공하는 "분산형 데이터베이스 시스템"입니다.
전화번호부로 비유됩니다.
DNS 시스템은 도메인 이름과 IP 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다고 할 수 있습니다. 

+ 추가 답변 : 
DNS 네임 서버는 도메인을 위한 DNS 레코드를 저장하는 서버입니다. DNS 네임 서버는 데이터베이스에 대한 퀴리의 응답 정보와 함께 응답합니다.
도메인 네임 스페이스는 이러한 DNS가 저장 관리하는 계층적 구조를 의미한다.
도메인 네임 스페이스는 최상위에 루트 DNS 서버가 존재하고 
그 하위로 연결된 모든 노드가 연속해서 이어진 계층 구조로 되어있다. (폴더 구조와 비슷하다. "."가 계층을 나타냅니다. )

https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/

6. 도메인 이름으로 실제 IP를 어떻게 찾을 수 있는지 흐름을 설명해 주세요.

웹브라우저에 www.google.co.kr 을 입력하면 웹브라우저는 이전에 방문 기록이 있는지 확인합니다. 
브라우저 캐시, OS 캐시, 라우터 캐시, ISP 캐시(Recursive DNS Server)를 확인합니다.
IP 주소가 캐시되어 있지 않다면,
ISP에서 DNS Iterative(Recursive DNS 서버가 다른 권한있는 DNS 서버에게 쿼리를 보내어 응답을 요청하는 작업) 하게 쿼리를 날립니다.
ISP는 Authorative DNS 서버에서 최종적으로 IP 주소를 응답받고
해당 IP 주소를 캐시한 후 웹브라우저에게 응답합니다.

+ 추가 답변 :
도메인 네임 스페이스의 트리 구조는 최상위 레벨부터 순차적으로 계층적 소속 관계를 나타냅니다. 
하위 조직의 네임 스페이스를 할당하고 관리하는 방식은 각 하위 기관의 관리 책임자에게 위임됩니다.
"Root DNS 서버"
  ICANN이 직접 관리하는 절대 존엄 서버. 
  TLD DNS 서버 IP 주소를 저장하고 안내하는 역할.
"Top-Level Domain(TLD) DNS 서버"
  도메인 등록 기관이 관리하는 서버.
  Authoritative DNS 서버의 주소를 저장하고 안내하는 역할.
  도메인 판매 업체(가비아 등)의 DNS 설정이 변경되면 도메인 등록 기관으로 전달되기 때문에 
  어떤 도메인이 어떤 판매업체(가바이 등)에서 구매했는지 알수 있습니다.
"Second-Level Domain(SLD) DNS 서버 (Authoritative DNS 서버 라고도 함)"
  실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버.
  (그래서 권한의 의미인 Authoritative로 네이밍.) 일반적으로 도메인/호스팅 업체의 네임서버를 지칭.
  개인 DNS 구축해도 이 경우에 해당됩니다.
"권한 없는 DNS 서버 (리졸버 서버, 리컬시브 서버, 리커서)"
  DNS 서버는 도메인 네임 스페이스를 위한 권한 있는 DNS 서버와 권한이 없는 DNS 서버로 구분.
  (위 1-3은 권한 있는 DNS 서버.)
  네임 스페이스를 위한 권한 "있는" DNS 서버는 IP 주소와 도메인 이름을 매핑합니다.
  네임 스페이스를 위한 권한 "없는" DNS 서버는 쿼리로 IP 주소를 알아내거나 캐시합니다.

TCP/UDP

7. TCP와 UDP의 차이에 대해서 설명해 주세요.

'TCP Transmission Control Protocol'

연결형 프로토콜로 가상 회선 방식(세그먼트 단위-패킷별 번호 부여)을 제공합니다.
3-way hand shake 과정으로 연결을 설정하고, 4-way hand shake로 연결을 헤제합니다.
데이터 흐름제어나 혼잡 제어 또한 제공합니다. 이렇다보니 UDP보다 상대적으로 속도가 느릴 수 있습니다.
UDP보다 상대적으로 신뢰성 있는 (패킷 손실이 적으며, 순차적 송신) 전송이 중요할때 사용됩니다.
파일 전송 등에 사용됩니다.

'UDP User Datagram Protocol'

비연결형 프로토콜이기에 서버 소켓과 클라이언트 소켓 구분이 없습니다. 
따라서 소켓 대신 IP를 기반으로 데이터(데이터그램 단위)를 전송합니다.
TCP보다 상대적으로 신뢰성(패킷 손실 가능)이 떨어지지만 전송 속도가 빠르며 네트워크 부하가 적습니다.
(순차전송 X, 흐름 제어 X, 혼잡 제어 X)
신뢰성보다 연속성이 중요한 서비스(예시 스트리밍)에 자주 사용됩니다.

https://mangkyu.tistory.com/15
https://mangkyu.tistory.com/15

TCP 헤더에 대해서 설명해 주세요.

MTU가 무엇인가요?

3-way hand shake, 4-way hand shake 흐름에 대해서 설명해주세요.

https://wiki.mikrotik.com/wiki/Manual:Connection_oriented_communication_(TCP/IP)
https://www.excentis.com/blog/tcp-half-close-a-cool-feature-that-is-now-broken/

HTTP

HTTP 프로토콜에 대해서 아는대로 말해주세요.

HTTP와 HTTPS 의 차이는 무엇인가요?

HTTPS가 동작하는 방식에 대해서 설명해 주세요.

HTTP 1.0과 1.1의 차이는 무엇인가요?

HTTP2와 그 특징에 대해서 설명해 주세요.

HTTP 헤더의 구조에 대해서 설명해 주세요.

keep-alive 헤더에 대해서 설명해 주세요.

HTTP GET과 POST의 차이는 무엇인가요?

쿠키와 세션에 대해서 설명해 주세요.

WEB

웹브라우저에서 서버로 요청했을 때, 흐름을 설명해주세요.

CORS란 무엇인가요?

웹 서버와 웹 어플리케이션 서버(WAS)의 차이는 무엇인가요?

REST API에 대해서 설명해 주세요.

API Gateway란 무엇인가요?

API Gateway가 다운되면 모든 API를 사용 못할지도 모르는데, 어떤 방안을 마련해야 할까요?

REFERENCE
https://velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C]
https://onecoin-life.com/19
https://hahahoho5915.tistory.com/15
https://aws.amazon.com/ko/route53/what-is-dns/
https://hanamon.kr/dns%EB%9E%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%84%A4%EC%9E%84-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EB%85%90%EB%B6%80%ED%84%B0-%EC%9E%91%EB%8F%99-%EB%B0%A9%EC%8B%9D%EA%B9%8C%EC%A7%80/
https://evan-moon.github.io/2019/11/10/header-of-tcp/