7주차 질문리스트(네트워크-2)

기술노트

7주차 질문리스트(네트워크-2)

- 구성원 : 이성호(@seonghoo1217), 김보민(@bm4656), 박수빈(@Siby1lA), 신태우(@frommF12), 임시은(@sineTlsl), 최낙주(@Gawq), 김지현(@debussySuh)


신태우

1. OSI 7 계층을 설명해주세요

=> OSI 계층은 애플리케이션 계층, 프레젠테이션 계층, 세션 게층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 이루어져있다. 애플리케이션, 프레젠테이션, 세션 계층은 TCP/IP 4계층의 애플리케이션 계층에 속하고, 네트워크 계층은 인터넷 계층이다.

2. 각 계층에 속한 프로토콜을 설명해주세요

  • 애플리케이션 : HTTP, FTP, SSH, SMTP, DNS
  • 전송 계층 : TCP, UDP
  • 인터넷 계층 : IP, ARP, ICMP
  • 링크 계층 : 이더넷

3. 각 계층에 속한 네트워크 처리 기기가 무엇이 있는지 설명해주세요

  • 애플리케이션 계층 : L7 스위치 (로드밸런서)
  • 인터넷 계층 : 라우터, L3 스위치
  • 데이터링크 계층 : L2 스위치, 브리지
  • 물리계층 : NIC, 리피터, AP

4. 스트리밍 서비스에는 TCP와 UDP 중 어떤 것을 사용하는 것이 좋을지 설명해주세요

  • 스트리밍 서비스는 실시간 데이터가 보이는 것이 중요한 서비스이므로 신뢰성보다 성능을 우선시한다.
  • UDP는 비연결형 서비스로 데이터만 주는 방식이다.
  • 소켓 대신 IP를 기반으로 데이터를 전송하고, TCP의 3-way handshake 등의 신뢰성 작업을 거치지 않기 때문에 TCP 보다 빠른 성능을 가지므로 UDP를 사용하는 것이 좋다.

5. 공인 IP와 사설 IP의 차이에 대해 설명해주세요

  • 공인 IP는 ISP로부터 할당받은 IP로 외부에 공개되어 있는 IP이다. 사설 IP는 공유기(라우터)에 의해 로컬 네트워크상의 장치(폰, 컴퓨터)에 할당되는 IP이다

박수빈

1. 브릿지와 스위치의 차이점은?

  • 브릿지는 소프트웨어적으로 프레임을 다시 만들어 전송하기에 느리고 스위치는 성능에 따라 L2 ~L7로 구분되며하드웨어적으로 처리해 빠르다.

2. 프로토콜이란?

  • 컴퓨터 간 데이터 통신을 원활히 하기 위해 규정한 약속, 신호 송신의 순서(handshaking)나 데이 터표현법, 오류 검출법 등을 정한 것

3. 브라우저 주소창에[1](http://www.test.com/) 입력 후 엔터를 눌렀을 때부터 페이지가 렌더 링 되는 과정을 설명하세요.

  1. local DNS → 루트 DNS 서버 → .com DNS 서버 → test.com DNS 서버 순서대로 www.test.com에 해당하는 IP주소 요청하고, 있다면 그 서버에서 바로 주소를 받음
  2. TCP 통신을 통해 소켓 개방
  3. HTTP 프로토콜로 요청
  4. 라우팅 중 프록시 서버를 만나면 웹 캐시에 저장된 정보를 response 받음
  5. 프록시 서버를 만나지 못해 www.test.com를 서빙하는 서버까지 가면 요청에 맞는 데이터를 response로 전송함
  6. 브라우저의 loader가 해당 response를 다운로드 할지 말지 결정
  7. 브라우저의 웹 엔진이 다운로드한 .html 파일을 파싱해 DOM 트리를 결정
  8. html 파싱중 script 태그를 만나면 파싱을 중단함
  9. script 태그에 있는 자원을 다운로드해 처리가 완료되면 다시 파싱 함
  10. CSS parser가 .css 파일을 파싱해 스타일 규칙을 DOM 트리에 추가하고 렌더 트리를 만듦
  11. 렌더트리를 기반으로 브라우저의 크기에 따라 각 노드들의 크기를 결정
  12. 렌더링 엔진이 배치를 시작(페인팅)


4. TCP와 UCP의 특징과 차이점은?

TCP 연결지향형 전송규약

흐름 중심 프로토콜

  • 통신을 주고받는 것을 중요시함
  • 중간에 패킷이 손실되는 경우 재전송을 통해(SYN-ACK handshaking) 신뢰성을 보장함(느림)
  • 대부분의 통신에서 사용됨, 특히 파일이나 데이터 전송 시에 사용
  • 데이터 경계 구분이 없음 (바이트 스트림 서비스)

UDP 비연결지향형 전송규약

데이터 중심 프로토콜

  • 주고받는 통신보다 데이터를 일방적으로 보내는 것을 중요시한다.
  • 데이터 전송의 신뢰성 보장 X, (빠름)- P2P, 스트리밍, 전화에 사용

5. 헬스 체크는 어떤 이유로 사용하는가

  • L4, L7 스위치 모두 헬스 체크를 통해 정상적인 서버 또는 비정상적인 서버를 판멸하기 위해 사용한다.

김지현

1. TCP와 UDP을 설명하고 그 차이점을 말해주세요.

  • TCP(Stateful, 상태유지)는 신뢰성이 있는 연결, UDP(Stateless, 무상태)는 빠른 전송을 지향하는 프로토콜입니다.
  • TCP는 내가 보낸 데이터가 확실히 상대방에게 전달이 되었는지 포커를 맺고, UDP는 일방적으로 전송을 합니다.
  • UDP는 알고리즘이 간단한 반면, TCP는 연결부터 끊는 과정까지 상대적으로 복잡합니다.
  • UDP의 한 예로 스트리밍 방송이 있는데, 방송을 하다가 중간에 신호가 끊어져도 다음으로 그냥 이어서 방송을 하는 것처럼 UDP는 일방적인 데이터 전송을 하는 반면, TCP는 데이터 하나라도 놓치지 않고 완벽히 보내는 것이 목표이기 때문에 방향성이 완전히 다릅니다.

2. TCP 3, 4-way handshake에 대해 설명해주세요.

  • 3-way handshake는 TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정이고, 4-way handshake 란 TCP의 연결을 해제하는 과정입니다.
  • 3-way handshake는 TCP의 연결을 초기화할 때 사용한다면, 4-way handshake는 세션을 종료하기 위해 수행되는 절차입니다.
  • 꼬리질문

2.1. TCP의 연결 설정 과정(3- way handshake)과 연결 종료 과정(4-way handshake)이 단계가 차이나는 이유를 설명해주세요.

  • Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 FIN에 대한 ACK만 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 때문입니다.

3. 만약 Server에서 FIN 플래그를 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면 어떻게 될까요?

  • Client에서 세션을 종료시킨 후 뒤늦게 도착하는 패킷이 있다면 이 패킷은 Drop되고 데이터는 유실될 것입니다.
  • 이러한 현상에 대비하여 Client는 Server로부터 FIN 플래그를 수신하더라도 일정시간(Default: 240sec)동안 세션을 남겨 놓고 잉여패킷을 기다리는 TIME_WAIT 과정을 거칩니다. 일정시간이 지나면, 세션을 만료하고 연결을 종료시키며, "CLOSE" 상태로 변화합니다.
  • TIME_WAIT에 대한 꼬리 질문

3.1. TIME_WAIT에 대해 설명해주세요.

  • tcp의 마지막 상태로 클라이언트와 미처리된 내용들을 처리하기 위해서 사용합니다. 즉 혹시모를 패킷전송오류를 막기위해서 time_wait이 존재하는것입니다.

3. 2. TCP 연결해제 과정에서 왜 time_wait를 하나요? time_wait를 해서 생기는 이점이 있나요?

  • time_wait는 크게 2가지 상황을 방지하기 위해 사용합니다. 지연패킷이 발생해서 다음 연결이 이루어 졌을때 마침 seq까지 동일하다면 데이터 무결성 문제가 발생합니다. 또한 ack가 유실되어 상대가 last-ack상태에 빠지게 된다면 다시 접속을 시도할때 rst를 리턴해 연결이 오류가 나면서 실패합니다. 충분한 시간의 time_wait은 이와같은 오류를 막아주는 이점이 있습니다.

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

  • OSI7계층은 네트워크 통신을 구성하는 요소들 7개의 계층으로 표준화 한 것입니다. 이렇게 표준화하는 것의 장점은 통신이 일어나는 과정을 단계별로 파악할 수 있어, 문제가 발생하면 해당 문제를 해결하기 용이해집니다.
  • 실제로 이용하는 대부분의 네트워크는 TCP/IP 4계층입니다. 통신에 실제로 사용되는 계층이고, 1,2계층이 1계층, 5,6,7계층이 4계층으로 운영됩니다.
  • 계층 꼬리 질문


4.1. 네트워크 계층과 전송 계층이 수행하는 역할과 1~4계층에서 데이터가 전송되는 형태가 어떻게 변화하는지 설명해주세요.

  • 네트워크 계층은 여러 노드를 거칠때마다 경로를 찾아주는 역할을 수행하고 전송계층은 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 하며 상위 계층이 데이터전달의 유효성 및 효율성을 고려하지 않아도 되는 역할을 수행합니다 . 물리계층에서 데이터는 0과 1의 비트로 전송되고 데이터링크계층에서 데이터는 프레임으로 전송되며 네트워크계층에서 데이터는 패킷, 전송계층에서 데이터는 세그먼트로 전송됩니다.

5. 스위치와 라우터의 차이점을 말씀해주세요.

  • 스위치는 내부 네트워크에 위치하면서 MAC 주소 테이블을 이용해 해당 프레임을 전송하는 2계층 장비입니다.
  • 라우터는 3계층 장비로 수신한 패킷의 정보를 보고 경로를 설정하여 패킷을 전송하는 역할을 수행합니다.

최낙주

1. OSI 7계층과 TCP/IP 4계층의 차이를 간단히 설명해보시오

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

2. TCP/IP 4계층을 간단히 설명해보시오

  • LINK 계층 : 물리적인 계층, LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜을 정의하는 영역
  • IP 계층 : 데이터 경로 설정, 특정한 규칙 없음, 오류 발생하면 다른 임의의 경로로 변경
  • TCP/UDP(전송) 계층 : 데이터의 실제 송수신, IP 계층에 발생한 문제를 해결
  • APPLICATION 계층 : 서버와 클라이언트를 만드는 과정에서 프로그램의 성격에 따라 정한 데이터 송수신에 대한 약속(규칙)

3. TCP와 UDP의 차이를 간단히 설명해보시오

TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정합니다. 그렇기 때문에 높은 신뢰성을 보장하지만 속도가 비교적 느리다는 단점이 있습니다. UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있습니다. 하지만 수신 여부를 확인하지 않기 때문에 속도가 빠릅니다. TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고 UDP는 실시간성이 중요한 스트리밍에 자주 사용됩니다.

4. 그렇다면 3-way handshake란?

3-way handshake란 TCP 네트워크 통신을 하는 장치가 서로 연결이 잘 되었는지 확인하는 방법입니다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태임을 확인합니다.

5. 3-way handshake의 과정을 설명해보시오

1. 클라이언트가 서버에게 SYN패킷을 보낸다. 2. 서버가 SYN을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보낸다. 3. 클라이언트가 ACK를 서버로 보내면 연결이 이루어진다.

이성호

1. 로드밸런싱의 목적은 무엇이며,L4 스위치와 L7스위치가 로드밸런서로 가지는 차이점은 무엇인가

⇒ 로드밸런은 트래픽을 받아 여러 대의 서버에 분산하는 기법이며 자원사용의 최소화와 특정서버의 과부화방지 및 처리량 증가의 목적을 두고 사용합니다.

L4스위치와 L7 스위치의 가장 큰 차이점으로는 L4스위치는 TCP헤더에 있는 정보인 IP와 Port번호를 기반으로 동작하고 4계층에 대한 정보로만 처리를한다. 대표적으로 AWS의 ElasticBeanstock에서 Network Load Balancer가 L4 스위치 역할을 하며,가상 IP를 리얼 IP로 변경해주는 작업을 수행합니다. 하지만 L7 로드밸런서는 Layer4를 넘어 Layer7 프로토콜 헤더를 분석할 수 있기 떄문에 IP와 Port이외에도 URL,Payload,Http Header,쿠키등의 내용을 활용해 트래픽의 부하를 분산하여 컨텐츠 기반 스위칭을 작업한다.

L4 로드밸런서는 단순 부하를 분산시키는데 집중한다면, L7로드밸런서는 패킷의 내용을 확인할 수 있기 때문에 보안지점 구축 및 사용자 요청 기준으로 트래픽 분산이 가능하다.

1-1.(꼬리) 로드밸런싱의 스케일업과 스케일 다운의 차이는 무엇인가요

2. 프로토콜은 무엇인가요?

⇒ 서로 다른기기간의 데이터 교환을 원활히 수행할 수 있도록 표준화 시켜놓은 통신규약이다.

2-1. (꼬리) 프로토콜이 수행하는 기능들에 대해서 설명해주세요

⇒ 데이터를 단편화 하여 전송함으로서 전송속도를 높이고 캡슐화를 통해 송,수신지 주소 및 오류검출코드등의 정보를 은닉화합니다. 또한 데이터의 양을 조절하는 흐름제어 기능과 오류를 검출하는 오류제어 및 송수신 상태를 맞추는 동기화 기능이 존재합니다.

3. TCP의 연결을 구축할 때 사용하는 기법이 무엇인가요?

⇒ 3-way-handshaking 기법을 사용하여 연결을하며 해당 기법을 사용하기 때문에 신뢰성있는 데이터 전달이 가능하나 중간 점검 단계로 인해 속도는 느려지게 됩니다.

3-1. (꼬리) 해당 연결 방법을 사용하는 대표적인 예시가 무엇이 있을까요?

⇒ 웹소켓에서 사용이 되는 방식이 대표적입니다. 기존 3-way-handshaking이 클라이언트와 서버사이에 적용되는 것처럼 웹소켓 최초접속시 브라우저와 서버사이에 핸드셰이킹이 사용됩니다.

4. MAC Address란 무엇인가요?

⇒ Media Access Control의 약자로, LAN에서 사용하는 독자적인 주소체계이며 절대 중복되지 않는 특성을 지닙니다.