<CS 지식> Network 질의응답

Google 아니고 Joogle·2022년 5월 27일
0

CS 지식

목록 보기
10/22

참고

1. OSI 7계층 선택 이유

  • 네트워크 통신이 일어나는 과정을 단계별로 살필 수 있기 때문에 문제 원인의 범위를 좁힐 수 있어 효율적
  • 장비 간 호환성 제공, 네트워크 장치/컴퓨팅 장치를 만들 때의 참조모델 표준이 될 수 있음

2. Outlook

  • Microsoft 사에서 개발한 개인 정보 관리자 응용 프로그램
    (메시지 프로토콜을 사용하기 쉽게하는 응용프로그램)
  • 7계층, Application layer과 관련

3. 모든 고객의 PC에서 서비스 중단이 일어났을 경우

  • 1계층 (physical layer) 혹은 3계층 (Network layer) 계층에 문제

4. 서버에 문제가 생겼는데 Ping Test 시 문제가 없을 경우

  • ping test : 네트워크 상에 있는 각각의 호스트간 통신이 살아있는지, 속도가 얼마나 나오는지 확인하기 위한 작업
    (ping -t XXX.XXX.XXX.XX -손실 0 : 인터넷 회선 정상적 작동)
  • Ping Test는 3계층 (Network layer)에 속하므로 4계층~7계층 사이에 문제가 발생

5. Youtube와 같은 streaming service 제작시

  • streaming 에서는 연속성이 중요하기 때문에 신뢰도는 낮지만 빠른 4계층 transport layer의 UDP Protocol 사용하여 구현

6. HTTP: 비연결성

  • 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질

  • 다수의 클라이언트와 서버간의 연결 상태를 유지하려면 자원이 많이 필요. HTTP는 다수의 클라이언트가 웹 서버에 요청하는 방식을 띄므로 연결지속에 필요한 자원을 줄여 더 많은 connection 을 수립하는 것에 중점을 둠

7. 비연결성의 장단점 & 해결법

  • 장점: 서버에서 다수의 클라이언트와 연결을 유지한다면 그만큼 리소스가 많이 필요, 비연결성이면 이에 따른 리소스를 줄여 더 많은 연결을 할 수 있음

  • 단점: 서버가 클라이언트를 기억하고 있지 않아 동일한 클라이언트의 요청에 대해 매번 연결 시도/해제의 작업을 해야하므로 오버헤드가 증가

  • 기본적으로 HTTP header 에는 Keep-Alive (한 번 맺은 세션을 요청이 끝나더라도 유지해주는 기능) 속성이 있는데, 이를 통해 연결에 대한 타임아웃을 지정할 수 있음

  • 연결성외에 클라이언트의 상태 정보를 저장하기 위해서는 cookie, token, session 사용

8. POST, GET

데이터를 조회하기 위한 용도로 POST가 아닌 GET 방식을 사용하는 이유

  • GET 방식은 서버에게 여러 번 요청을 하더라도 동일한 응답이 돌아와야한다 (멱등성) , GET 방식은 '가져오는 것'이므로 서버의 데이터나 상태를 변경시키지 않아야 함, POST 방식은 '수행하는 것'이므로 서버의 값이나 상태를 바꾸기 위한 용도

  • 웹에서 모든 리소스는 Link할 수 있는 url을 가지고 있어야 함, 어떤 웹 페이지를 조회할 때 원하는 페이지로 바로 이동하거나 이동시키기 위해서는 해당 링크의 정보가 필요, 만일 POST 방식을 사용한다면 링크의 정보가 Body에 있기 때문에 url만 전달할 수 없으므로 GET 방식 사용, 글을 저장하는 경우에는 URL을 제공할 필요가 없기 때문에 POST 방식 사용

9. 웹 애플리케이션 제작 시 조회/삭제/수정

  • 조회: GET, 삭제: DELETE, 수정: POST
  • GET은 조회하기 위한 메서드로 멱등성을 만족하기 위해 데이터의 수정이 없어야하며, POST는 서버의 값 혹은 상태를 변경하기 위한 메서드로 수정하기 위해 사용
  • RESTful API에 근거하여 삭제는 DELETE 로 설계

10. TCP vs UDP

TCP (Transfer Control Protocol) : 4계층 Transport layer에 속함

  • 3-way handshaking을 통해 논리적인 경로의 연결을 수립, 4-wa handshacking을 통해 논리적인 경로의 연결을 해제하는 Connect oriented
  • 혼잡제어, 흐름제어 기능 제공
  • Reliable Data Transfer (=RDT) 즉, 신뢰성 있는 전송 지원
    (Go-Back-N, Selective Repeat, 타이머)를 통한 timeout 등 다양한 방식이 있음
  • HTTP, E-mail, File Transfer 등 사용

UDP (User Datagram Protocol) : TCP와 같이 전송계층에 속해있으나 특징이 조금 다름

  • 비연결형, Connectionless Protocol. TCP와 같은 handshaking 절차가 존재하지 않음
  • TCP에서 지원하는 흐름제어, 혼잡제어, 순서보장, 전송보장 기능을 제공하지 않음
  • 최소한의 오류검출을 위해 checksum 활용
  • TCP에 비해 빠른 속도와 적은 부하를 갖기에 실시간 straming, DNS에 사용하기 적합

11. HTTP 또는 암호화 되지 않은 프로토콜의 문제점

  • 평문 통신이기 때문에 도청 가능
  • 통신 상대를 확인하지 않기 때문에 위장 가능
  • 완전성을 증명할 수 없기 때문에 변조 가능

12. HTTPS

  • HTTP에 SSL을 덮어 씌운 것과 같이, 원래 HTTP의 통신하는 소켓 부분을 SSL 또는 TLS라는 프로토콜로 대체하는 것
  • 원래 TCP와 직접 통신했다면 HTTPS에서는 HTTP와 SSL이 통신하고 SSL과 TCP가 통신하는 방식
  • SSL을 이용하는 HTTP는 암호화와 증명서, 안정성 보호를 이용할 수 있게 됨

13. HTTP vs HTTPS

  • HTTPS가 보안적인 면에서 뛰어난 만큼 처리해야 할 작업이 많이 속도가 떨어져 중요한 데이터 처리 외에는 HTTP를 사용할 것이라 생각할 수 있지만 그렇지 않음
  • HTTPS 만을 지원하도록 HTTP/2는 다중화와 우선순위를 이용하여 더 빠르게 페이지를 로드하는 구글의 네트워크 프로토콜 SPDY를 기반으로 하고 있음 -> HTTP/2를 지원하는 웹이라면 HTTPS가 속도 조차 더욱 빠름

14. DNS Server의 역할

  • IP 주소와 도메인 이름의 매핑 관리
  • DNS 서버는 IP주소와 도메인 간의 변환 작업을 수행, 사용자가 도메인 이름을 웹 브라우저에 입력한다면 해당 사용자를 어떤 서버에 연결할 것인지를 제어

15. 도메인과 IP 주소

  • 인터넷은 서버들을 유일하게 구분할 수 있는 IP 주소를 기본 체계로 이용
  • IP 주소는 숫자로 이루어진 조합이라 인간이 기억하기엔 무리가 있음
  • 기억하기 편한 언어 체계의 도멘 이름을 통해 웹 서버에 접속

16. 도메인의 구조

  • 도메인은 .(dot) 또는 루트(root)라고 불리는 도메인 이하에 Inverted tree 구조로 구성되어 있음
  • 1단계부터 차례대로 TLS (Top Level Domain), SLD (Second Level Domain), SubDomain 이라고 함

17. DNS 서버의 Recursive Query 과정

  • 로컬 DNS 서버가 여러 DNS 서버를 차례대로 (루트->com->naver.com DNS서버) 질의해서 IP 주소를 찾아가는 과정

18. Round Robin DNS

  • 클라이언트의 웹서버 IP를 요청하는 쿼리를 받을 때마다 여러대의 웹서버를 번갈아가면서 가르쳐줌으로 부화를 분산시키는 로드밸런싱 방법

19. Round Robin DNS의 문제점

  • 필요한 서버만큼 공인 IP주소 필요, 균등하게 분산되지 않을 수 있음 (특히 스마트폰)
  • 서버가 다운되어도 확인 불가, 유저들에게 해당 IP를 제공할 수도 있음
  • Weighted Round Robin : Round Robin과 같지만 가중치를 더해서 분산 비율을 변경, 가중치가 큰 서버일 수록 자주 선택되므로 처리능력이 높은 서버를 가중치를 높게 설정
  • Least Connection : 접속 수가 가장 적은 서버 선택
profile
Backend 개발자 지망생

0개의 댓글