네트워크 면접 질문 정리

김혁준·2024년 6월 18일
0

네트워크

목록 보기
2/5

1. HTTP 프로토콜에 대해

HTTP란 데이터를 주고 받기 위한 프로토콜이며 서버/클라이언트 모델을 따릅니다.
HTTP는 상태 정보를 저장하지 않는 Stateless의 특징과 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 특징을 가지고 있습니다.
장점은 통신간의 연결 상태 처리나 상태 정보를 관리할 필요가 없어 서버 디자인이 간단하고 각각의 HTTP 요청에 독립적으로 응답만 보내주면 됩니다.
단점은 이전 통신의 정보를 모르기 때문에 매번 인증을 해주어야 합니다. 이를 해결하기 위해서는 쿠키나 세션을 사용해서 데이터를 처리합니다.

2. HTTP와 HTTPS의 차이점

HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에 HTTP로 중요한 정보를 주고 받으면 제 3자에 의해 조회될 수 있습니다. 이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다. HTTPS는 SSL의 껍질을 덮어쓴 HTTP라고 할 수 있습니다. HTTP는 원래 TCP와 직접 통신했지만 HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신함으로써 암호화와 증명서,안정성 보호를 이용할 수 있게 됩니다.

3. 쿠키와 세션의 차이점에 대해

쿠키는 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일입니다. HTTP에서 클라이언트의 상태 정보를 PC에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있습니다.
세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지시키는 기술입니다. 즉 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 합니다.

4. www.naver.com에 접속할 때 생기는 과정에 대해

먼저 사용자가 브라우저에 URL을 입력하면 DNS 서버에 도메인 네임으로 서버의 진짜 주소를 찾습니다. 그 후 IP주소로 웹 서버에 TCP 3 핸드쉐이크로 연결을 수립합니다.
연결이 완료되면 클라이언트는 웹서버로 HTTP 요청 메세지를 보냅니다. 웹서버는 HTTP 응답 메세지를 보내고 도착한 HTTP 응답 메세지는 웹 페이지 데이터로 변환되고 웹 브라우저에 의해 출력됩니다.

5. TCP와 UDP의 차이

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

6. TCP 통신은 종료시에도 3 way handshaking을 사용하나요

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

7. OSI 7 Layer와 각 계층에 대해 아는대로 설명해주세요

OSI 7 Layer는 7개의 계층으로 이루어져 있습니다.
7계층은 응용계층으로 사용자에게 통신을 위한 서비스를 제공하며 인터페이스 역할을 합니다.
6계층은 표현계층으로 데이터의 형식을 정의하는 계층입니다.
5계층은 세션계층으로 컴퓨터끼리의 통신을 하기 위해 세션을 만드는 계층입니다
4계층은 전송계층으로 최종 수신 프로세스로 데이터의 전송을 담당하는 계층입니다
3계층은 네트워크계층으로 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층입니다
2계층은 데이터링크계층으로 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층입니다
1계층은 물리계층으로 데이터를 전기 신호로 바꾸어주는 계층입니다

8. HTTP Method와 각각이 사용되는 경우에 대해

HTTP 메소드는 클라이언트가 서버에게 사용자 요청의 목적을 알리는 수단입니다.
종류는 GET,POST,PUT,PATCH,DELETE가 있고 데이터 조회, 요청 데이터 처리, 데이터 변경, 일부 데이터 변경, 데이터 삭제의 기능을 합니다

9. GET과 POST의 차이

GET은 데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식입니다. URL에 데이터가 노출되므로 보안적으로 중요한 데이터를 포함해서는 안됩니다. POST는 데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 바디에 추가하여 전송하는 방식입니다. 완전히 안전하다는 것은 아니지만 URL에 데이터가 노출되지 않아 GET보다는 안전합니다.

10. 세션 기반 인증과 토큰 기반 인증

세션 기반 인증은 클라이언트로부터 요청을 받으면 클라이언트의 상태 정보를 저장하므로 Stateful한 구조를 가지고 토큰 기반 인증은 상태 정보를 서버에 저장하지 않으므로 Stateless한 구조를 가집니다
세션 기반 인증의 단점은 서버에 세션을 저장하기 때문에 사용자가 증가하면 서버가 과부하를 줄 수 있어 확장성이 낮습니다. 그리고 해커가 훔친 쿠키를 이용해 요청을 보내면 서버는 올바른 사용자가 보낸 요청인지 알 수 없습니다.
일반적으로 세션 기반 인증은 단일 도메인의 경우에 사용하고 아니라면 토큰 기반 인증을 사용하는 것이 적합하다고 생각합니다. 세션을 관리할때 사용되는 쿠키는 단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 있기 때문에 여러 도메인에서 관리하는 것은 어렵습니다.

11. JWT 토큰

JWT는 JSON 포맷을 이용하는 Claim 기반의 웹 토큰이며 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달합니다. JWT는 헤더,페이로드,서명으로 구성되며 각 파트를 점으로 구분합니다.
헤더는 토큰의 타입과 해시 암호화 알고리즘으로 이루어져 있습니다.
내용은 토큰에 사용자가 담고자 하는 정보를 담습니다. 내용에는 Claim이 담겨있고 JSON형태의 한 쌍으로 이루어져 있습니다.
서명은 토큰을 인코딩하거나 유효성 검증할 때 사용하는 고유한 암호화 코드입니다. 헤더의 내용과 값을 인코딩합니다.

12. 대칭키 비대칭키 암호화 방식

대칭키와 비대칭키는 양뱡향 암호화 방식이며 대칭키는 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘입니다. 이는 중간에 누군가 암호키를 가로채면 암호화된 정보가 유출될 수 있다는 단점이 있는데, 이런 문제를 보완한 새로운 방식이 비대칭키입니다.
비대칭키는 암호화와 복호화를 할 때 키를 서로 다른 키로 사용하는 암호화 알고리즘입니다. 타인에게 절대 노출되어서는 안되는 개인키와 공개적으로 개방되어 있는 공개키를 한 쌍으로 이룬 형태입니다.

13. Connection Timeout과 Read Timeout의 차이에 대해

서버 자체에 클라이언트가 어떤 사유로 접근을 실패할 경우 적용되는 것이 Connection Timeout입니다. 즉 접근을 시도하는 시간 제한이 Connection Timeout 되는 것을 말합니다
클라이언트가 서버에 접속을 성공 했으나 서버가 로직을 수행하는 시간이 너무 길어 제대로 응답을 못 준 상태에서 클라이언트가 연결을 해제하는 것이 Read Timeout입니다
이 경우는 클라이언트는 해당 상황을 오류로 인지하고 서버는 계속 로직을 수행하고 있어 성공으로 인지하기 때문에 양 사이드간 싱크가 맞지 않아 문제가 발생할 확률이 높습니다.

14. 공인 IP와 사설 IP의 차이에 대해

공인 IP는 ISP가 제공하는 IP 주소이며 외부에 공개되어 있는 IP주소입니다
사설 IP는 일반 가정이나 회사 내 등에 할당된 네트워크 IP 주소이며 IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC나 장치에 할당됩니다. 사설 IP주소만으로는 인터넷에 직접 연결할 수 없고 라우터를 통해 1개의 공인 IP를 할당하고 라우터에 연결된 개인 PC는 사설 IP를 각각 할당 받아 인터넷에 접속할 수 있습니다.

15. TCP/IP 4계층

TCP/IP 프로토콜이 미 국방성 통신 표준으로 채택되면서 해당 프로토콜의 통신 과정을 크게 4개의 계층 구조로 나눠 설명한 것을 말합니다. 네트워크 접근 계층, 인터넷 계층, 트랜스포트 계층, 어플리케이션 계층의 총 4계층으로 구성됩니다.
네트워크 접근 계층은 물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지를 정의합니다 물리적인 주소로 MAC를 사용하며 에러검출 및 패킷의 프레임화를 담당합니다.
인터넷 계층이란 통신 노드 간의 IP 패킷을 전송하는 기능과 라우팅 기능을 담당합니다. 대표적은 프로토콜로 IP가 있으며 IP주소를 기반으로 데이터를 주고 받습니다
전송 계층은 통신 노드간의 연결을 제어하고 신뢰성 있는 데이터 전송을 담당합니다. TCP,UDP가 속하며 포트 번호를 이용해 전송합니다
응용 계층은 사용자와 가장 가까운 계층으로 인터페이스 역할을 합니다. HTTP,FTP,SSH등이 여기에 포함됩니다.

16. HTTP1 vs HTTP2

HTTP1.1은 1999년 출시 이후 지금까지 가장 많이 사용되고 있습니다. HTTP는 웹상에서 클라이언트와 웹서버간의 통신을 위한 프로토콜 중 하나입니다. HTTP1.1은 기본적으로 연결당 하나의 요청과 응답을 처리하기 때문에 동시전공 문제와 다수의 리소스를 처리하기에 속도와 성능 이슈를 가지고 있습니다.
이렇다 보니 Head of Line Blocking 특정응답지연, Rount Trip Time 증가, 헤비한 Header 구조라는 문제점들을 가지고 있습니다.
이후 등장한 HTTP2는 성능 뿐만 아니라 속도에서도 월등합니다. 한 커넥션에 여러개의 메세지를 동시에 주고 받을 수 있는 멀티플레스 스트림, 요청 리소스간의 의존관계를 설정할 수 있는 Stream Prioritization, HTML 문서상에 필요한 리소스를 클라이언트 요청없이 보낼 수 있는 Server Push, Header 정보를 HPACK 압축 방식을 이용하여 압축전송하는 Header Compression을 사용하여 성능을 획기적으로 향상 시켰습니다.

17. CORS

CORS란 서로 다른 Origin 간에 자원을 공유하는 것을 의미합니다. 여기서 오리진이란 Protocol, Host, Port를 모두 합친 것을 의미합니다. 기본적으로 Origin이 서로 같을 때만 자원을 공유할 수 있습니다. 이를 SOP라고 부릅니다. 그런데 서버와 클라이언트의 요청처럼 서로 다른 오리진간의 데이터를 공유할 필요가 있는 경우가 있습니다. 이렇게 SOP의 예외사항을 둘 것이 CORS라고 할 수 있습니다. CORS에 대한 설정은 Access-Control-Allow-Origin의 값에 자원을 공유할 다른 Origin 정보를 담으면 됩니다.

18. REST API

REST API란 자원의 이름으로 해당 자원의 상태를 주고 받는 것을 의미합니다. HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD를 적용할 수 있으며 서버는 요청에 대한 응답으로 JSON, XML과 같은 HTTP Method Payload를 받을 수 있습니다.

19. DNS

도메인 네임을 IP주소로 바꿀 수 있도록 도와주는 분산 시스템입니다
도메인 주소는 .을 기준으로 나뉘게 되며 가장 오른쪽부터 해석됩니다. 이러한 도메인 주소는 통으로 관리되는 것이 아니라 트리 구조로 분리한 다음 관리하게 되는데, 이 전체 트리 구조를 도메인네임스페이스라고 부르고 각각의 도메인을 네임서버가 처리하게 됩니다.
실제로 DNS가 동작하는 방식은 먼저 리졸버가 사용자로부터 요청받은 도메인네임을 가지고 네임서버에 DNS 쿼리를 날립니다. 네임 서버는 해당 도메인을 가지고 IP주소를 찾아 리졸버에게 넘겨줍니다. 리졸버는 DNS 서버로부터 최종 결과를 응답 받아 웹 브라우저로 전달합니다.

20. 응답 상태 코드

응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 이러한 상태코드는 응답의 의미에 따라 5가지로 나뉩니다. 현재 작업의 진행상황과 관련된 정보를 알려주는 100번대
요청이 성공적으로 받아들여졌음을 의미하는 200번대,
요청이 완료되기 위해선 리다이렉트가 필요함을 의미하는 300번대,
클라이언트의 요청이 올바르지 않는 것을 의미하는 400번대,
서버 쪽에서 처리하는데 문제가 생겼음을 암시하는 500번대가 있습니다
대표적은 응답 상태 코드로는 get 요청을 잘 받았음을 의미하는 200,
post 요청이 성공적으로 되었음을 의미하는 201,
csrf token을 받지 못했을 때 발생하는 forbidden 403
요청한 페이지가 없음을 의미하는 404등이 있습니다.

21. Keep-Alive

HTTP는 기본적으로 connectionless 입니다. 한번 요청 후 응답을 받으면 연결을 끊어버립니다. 이러한 연결을 끊지 않고 계속 요청을 보낼 수 있도록 하는 것이 keepalive입니다. 이는 connection과 keep-alive 헤더를 설정하여 사용할 수 있습니다. keep-alive를 사용함으로써 3-way handshake로 인한 지연 시간을 줄일 수 있습니다.

22. 무상태성

HTTP에서 서버가 클라이언트의 상태를 보존하지 않는 것을 의미합니다. 서버의 개수가 많아지면 그만큼 정보를 많이 공유해야 하기 때문에 비싸질 수 밖에 없는데, stateless하게 사용하면 정보 공유가 최소화되어 비용 절감이 가능합니다

23. 네트워크란

물리적 전송 매체를 사용하여 서로 연결된 장치 세트
컴퓨터 네트워크는 하드웨어, 데이터 및 소프트웨어와 같은 정보 및 리소스를 통신하고 공유하기 위해 서로 연결된 컴퓨터 그룹
네트워크에서 노드는 둘 이상의 네트워크를 연결하는데 사용된다

24. 네트워크 망의 종류

LAN, WAN이 있습니다. LAN은 한 건물 또는 사무실 내의 호스트들 간에 연결된 소규모 네트워크입니다. WAN은 LAN과 LAN을 연결하는 대규모 네트워크입니다

25. Cast의 종류

UniCast는 1:1 통신, 원하는 대상 하나를 정해서 통신합니다. Multicast는 1:N 통신, 원하는 대상 여러 명을 정해서 통신합니다. BroadCast는 1:ALL 통신입니다. 내 의지와 상관없이 무조건 받아들여야 하는 통신입니다.

26. 회선과 대역폭이란

전송되는 데이터를 허용할 수 있는 동시접속자 수입니다.

27. ISP란

Internet Service Provider. 인터넷 서비스 공급자로 다양한 회선 상품을 제공하며 기업마다 서비스가 다릅니다

28. VPN

Virtual Private Network. 가설사설망으로 ISP에 정보를 넘겨주지 않고 익명성을 유지하여 인터넷에 접속합니다

29. DSL

Digital Subscriber Line. 전화선을 이용한 인터넷 서비스이며 현재는 잘 쓰이지 않습니다. ADSL은 비대칭이며 다운로드는 빠르고 업로드는 느립니다. 전화선에 모뎀과 마이크로 필터를 사용해서 인터넷에 연결합니다. 전화국으로부터 거리가 멀어도 괜찮습니다.
VDSL은 초고속이며 대칭/비대칭 모두를 지원하며 ADSL처럼 전화선을 이용하나 속도가 훨씬 빠릅니다. 전화국으로부터 거리가 멀면 안됩니다.

30. FTTH

Fiber To The Home이며 광통신,초고속 기가 인터넷, 집안까지 광케이블을 통해 인터넷을 제공하는 서비스입니다.

31. IP란

Internet Protocol Address. 컴퓨터 네트워크에서 기기들이 서로를 인식하고 통신하기 위해 사용하는 식별번호입니다.

32. 패킷이란

네트워크 상에서 전송하는 데이터를 일정한 크기로 자른 작게 나눠진 데이터의 묶음입니다. 누구에게 어디로 무엇을 보내야 하는지에 대한 정보가 담겨있습니다. 안정성 때문에 나눠서 보냅니다.

33. 네트워크 애플리케이션의 역할

TCP/IP는 소프트웨어에 데이터를 전달할때 데이터를 받을 호스트의 주소인 IP주소와 포트번호도 함께 전달합니다
IP주소는 네트워크에 연결된 기기를 식별하는 유일한 번호입니다
포트번호는 수신측에서 동작하는 여러 애플리케이션 중 데이터를 수신할 어플리케이션을 식별하는 번호입니다.

34. 4 way handshaking에서 서버가 마지막에 FIN을 보내는 이유

서버가 아직 클라이언트에 보낼 데이터가 남아있을 경우 데이터를 다 전송하지도 못한 채 클라이언트에서 포트를 닫아버리게 되므로 서버 또한 종료될 준비가 되었다는 의미로 FIN을 보냅니다

35. 4 way handshake에서 클라이언트가 마지막에 ACK를 보내는 이유

서버가 보낸 FIN을 클라이언트가 받지 못하면 클라이언트는 FIN_WAIT_2 상태로 종료가 되지 못한 채 계속 기다려야 합니다. 하지만 서버는 이미 포트를 닫고 더는 응답을 하지 않는 상태이기에 클라이언트는 불필요한 자원을 소모할 수 있습니다

36. HTTPS 환경에서 3 way handshake

클라이언트에서 서버로 SSL 정보 및 암호화 방식 및 무작위 바이트 문자열(A)을 보냅니다.
서버에서 클라이언트로 인증서와 무작위 바이트 문자열(B)을 보냅니다
클라이언트가 CA에 인증서 목록에 있는지 확인 후 있다면 공개키를 받습니다
클라이언트가 서버로 무작위 바이트 문자열 A와 B를 조합하여 공개키로 암호화하여 전송합니다
서버에서 비밀키로 받은 무작위 바이트 문자열 조합을 복호화합니다. 이것으로 세션 키를 만들어서 이 키를 가지고 암호화한 데이터를 주고 받습니다.

37. 허브와 리피터 허브

허브와 리피터허브는 물리계층에서 전기적인 신호를 증폭시켜 전송 거리를 연장하는 장치입니다. 네트워크 신호가 연결된 모든 PC에 전달되기 때문에 연결된 장치가 많을수록 부하가 심해집니다
차이점은 허브의 경우 패킷 모니터링과 멀티 포트를 지원하여 문제가 생긴 곳을 고립시킬 수 있습니다.

38. 브릿지와 스위치

브릿지와 스위치는 데이터링크계층에서 전송 거리를 연장하는 장치입니다
차이점으로는 브릿지의 경우 소프트웨어적으로 프레임을 다시 만들어 전송해 더 느립니다. 반면 스위치는 성능에 따라 L2,L3,L4,L7로 구분됩니다. 하드웨어적으로 처리해 더 빠릅니다.

39. ARP와 RARP

ARP와 RARP는 네트워크 계층에서 사용되는 주소 결정 프로토콜입니다. 차이점으로는 ARP는 IP주소에서 MAC 주소를 알아내는 반면 RARP에서는 MAC 주소에서 IP 주소를 알아냅니다.

40. 게이트웨이란

외부에서 연결되는 통로, 로컬망 라우터와 외부망 라우터 간의 통로입니다

41. 로드 밸런싱

분산식 웹 서비스로 여러 서버에 부하를 나누어줍니다. Round Robin, Least Connection, Response Time, Hash등의 기법이 있습니다.
라운드 로빈 방식은 각 서버에 세션을 순서대로 연결하는 방식입니다. 모든 클라이언트를 똑같이 취급하고 서버별 처리량을 기억하고 있어야 합니다.
Least Connection 방식은 클라이언트와 서버별 연결된 connection 수를 고려하여 가장 적은 서버에 연결하는 방식입니다.

42. 주요 포트 넘버

HTTP는 포트번호 80이며 웹을 지원하기 위한 프로토콜입니다. GET,PUT과 같은 프로토콜 기능을 포함해서 웹 서버에게 어떠한 Content를 요청하고 또는 웹 서버로 정보를 보냅니다.
FTP는 포트번호 20,21이며 TCP를 활용해 대량의 파일을 송신하고 수신하는 프로토콜입니다
TFTP는 포트번호 69이며 UDP를 사용하는 파일 전송 프로토콜입니다. 라우터나 스위치등의 네트워크 장비의 IOS 이미지를 업로드하고 다운로드할때 사용합니다
Telenet은 포트번호 23이며 원격지에 있는 장비로 표준 터미널 에뮬레이션 기능을 제공합니다. 네트워크 장비에서는 텔넷을 통해 원격지에서 장비를 설정합니다
SMTP는 포트번호 25번이며 컴퓨터 네트워크를 통해 전자메일을 전송하는 프로토콜입니다. 받을때는 POP3을 활용합니다
SNMP는 포트번호 161이며 네트워크 장비를 모니터링하고 제어하기 위해 사용하는 프로토콜로 네트워크 장애 관리, 장비 설정, 통계 성능 및 보안등을 관리합니다
DNS는 포트번호 53번으로 도메인 주소를 IP ADDRESS로 변경합니다. 모든 퍼블릭 IP 주소와 호스트 이름은 DNS에 저장되고 나중에 해당 IP주소로 변환합니다

43. 프로토콜이란

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

44. HTTP 프로토콜

하이퍼텍스트를 전송하는 규약입니다 하이퍼텍스트는 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이며 비연결성 프로토콜입니다. REQUEST에 대한 RESPONSE만 전달되고 연결 유지는 안됩니다.

45. 프록시 서버 기능이란

클라이언트가 프록시 서버를 통해 다른 네트워크 서비스에 간접적으로 접근을 할 수 있게 하는 것입니다. 프록시 서버는 요청된 내용을 캐시에 저장하고 다음에 같은 요청이 들어오면 캐시에 저장된 정보를 제공해 전송시간을 단축합니다

46. 페이지의 내용과 데이터의 값이 계속해서 바뀌면

캐시 만료기한을 설정합니다 프록시 서버라도 최초로 받는 요청에는 실제 서버로 요청을 보내야 하므로 그때 만료기한을 설정해서 프록시 서버로 보내면 됩니다. 프록시 서버에서 바로 사용자가 요청했을 때 요청한 시각이 프록시에서 다운로드받은 시간에서 만료기한 이내이면 프록시에서 다운로드를 할 것이고 그렇지 않다면 다시 실제 서버로 요청을 하게 됩니다.

47. 방화벽이란

방화벽은 컴퓨터 네트워크를 무단 액세스로부터 보호하는데 사용되는 네트워크 보안 시스템입니다. 외부로부터의 악의적인 액세스를 방지하고 외부 사용자에게 제한된 엑세스 권한을 부여하기 위해 방화벽을 구축합니다. 하드웨어 장치, 소프트웨어 프로그램 또는 이 둘의 조합으로 구성됩니다.
방화벽을 통해 라우팅되는 모든 메세지는 특정 보안 기준에 따라 검사되며 기준을 충족하는 메시지는 네트워크를 통해 성공적으로 통과하거나 해당 메시지가 차단됩니다.
다른 컴퓨터 소프트웨어와 마찬가지로 설치할 수 있으며 나중에 필요에 따라 사용자 정의하고 액세스 및 보안 기능을 일부 제어할 수 있습니다.

48. 흐름제어와 혼잡제어

흐름제어는 수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제 없지만 송신 측의 속도가 빠를 경우 문제가 생깁니다. 수신 측에서 제한된 저장 용량을 초과한 이후에 도착하는 패킷은 손실될 수 있으며 만약 손실된다면 불필요한 추가 패킷 전송이 발생하게 됩니다. 즉 송신 측과 수신 측의 TCP 버퍼 크기 차이로 인해 생기는 데이터 처리 속도 차이를 해결하기 위한 기법입니다
혼잡제어는 데이터의 양이 라우터가 처리할 수 있는 양을 초과하면 초과된 데이터는 라우터가 처리하지 못합니다. 이때 송신 측에서는 라우터가 처리하지 못한 데이터를 손실 데이터로 간주하고 계속 재전송하여 네트워크를 혼잡하게 합니다. 이런 상황은 송신 측의 전송 속도를 적절히 조절하여 예방할 수 있는데 이것을 혼잡제어라고 합니다
요약하자면 흐름제어는 송수신 측 사이의 패킷 수를 제어하는 기능이라 할 수 있으며 혼잡제어는 네트워크 내의 패킷 수를 조절하여 네트워크의 오버플로우를 방지하는 기능입니다.

49. 흐름제어와 혼잡제어를 하는 방법

흐름제어는 Stop and wait가 있습니다. 매번 전송한 패킷에 대해 확인 응답을 받으면 다음 패킷을 전송하는 방법입니다. 그러나 패킷을 하나씩 보내기 때문에 비효율적인 방법입니다. 그리고 슬라이딩 윈도우가 있습니다. 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답 없이 패킷을 전송할 수 있게하여 데이터 흐름을 동적으로 조절하는 제어 기법입니다. 최초의 윈도우 크기는 호스트들의 3 way handshaking을 통해 수신 측 윈도우 크기로 설정되면 이후 수신 측의 버퍼에 남아있는 공간에 따라 변합니다. 예를 들면 송신자는 수신자의 확인 응답을 받기 전까지 데이터를 보내고 수신자 확인 응답을 송신자에게 보내면 슬라이딩 윈도우 사이즈를 충족할 수 있게끔 윈도우를 옆으로 옮깁니다
혼잡제어에는 AIMD(Additive Increase/Multiplicative Decrease)가 있습니다. 처음에 패킷을 하나씩 보내고 이것이 문제없이 도착하면 윈도우 크기를 1씩 증가시켜가며 전송하는 방법입니다. 전송에 실패하거나 일정 시간을 넘으면 패킷의 보내는 속도를 절반으로 줄이는 방식입니다 그리고 슬로우 스타트가 있습니다. 윈도우의 크기를 1,2,4,8.. 과 같이 지수적으로 증가시키다가 혼잡이 감지되면 윈도우 크기를 1로 줄이는 방식입니다. 이후 혼잡 현상이 발생하였던 윈도우 사이즈의 절반까지는 이전처럼 지수 함수 꼴로 창 크기를 증가시키고 그 이후부터는 완만하게 1씩 증가시킵니다
그리고 Fast Recovery가 있습니다. 혼잡한 상태가 되면 윈도우 사이즈를 1로 줄이지 않고 반으로 줄이고 선형 증가시키는 방법입니다. 이 정책까지 적용하면 혼잡 상황을 한번 겪고 나서부터는 순수한 AIMD 방식으로 동작하게 됩니다.

50. 서버에서 Fin 플래그를 전송하기 전에 전송한 패킷이 라우팅 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면

4 way handshake 과정 마지막 부분에서 말한 TIME-WAIT를 말한 부분이 답이라고 보면 되는데, TCP는 이러한 현상에 대비하여 Client는 서버로부터 FIN 플래그를 수신하더라도 일정시간동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거칩니다.

51. 초기 Sequence Number인 ISN을 0부터 시작하지 않고 난수를 생성해서 설정하는 이유

Connection을 맺을때 사용하는 포트는 유한 범위 내에서 사용하고 시간이 지남에 따라 재사용 됩니다. 따라서 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용하는 가능성이 존재 합니다. 서버측에서는 패킷의 SYN을 보고 패킷을 구분하게 되는데 난수가 아닌 순차적인 Number가 전송된다면 이전의 Connection으로부터 오는 패킷으로 인식할 수 잇습니다. 이러한 문제가 발생할 가능성을 줄이기 위해서 난수로 ISN을 설정합니다.

52. UDP는 항상 신뢰성을 보장하지 않는가

UDP를 사용하더라도 기존의 TCP가 가지고 있던 기능을 구현할 수 있습니다 애초에 UDP는 데이터 전송을 제외한 어떤 기능도 정의되어있지 않는 프로토콜이기 때문에 프로토콜 자체적으로 봤을 땐 신뢰성을 보장하지 않습니다. 하지만 다르게 말하면 아무 기능이 없는 백지 상태의 프로토콜입니다. 즉 이후 개발자가 어플리케이션 구현을 어떻게 하냐에 따라서 TCP와 비슷한 수준의 기능을 가질 수 있습니다
예를 들어 HTTP/3은 QUIC 프로토콜을 사용합니다. QUIC는 UDP를 기반으로 하지만 신뢰성, 순서보장, 그리고 흐름 제어와 같은 TCP와 비슷한 기능을 제공합니다. 이를 통해 HTTP/3은 기존의 HTTP/2보다 더 빠른 연결 성립 및 전송 속도를 제공하면서도 데이터의 신뢰성을 보장할 수 있습니다.

53. CSRF가 무엇인가

CSRF란 한글 뜻으로는 사이트간 요청 위조를 뜻합니다. CSRF는 웹 보안 취약점의 일종이며 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격입니다 예를 들어 피해자의 전자 메일 주소를 변경하거나 암호를 변경하거나 자금 이체를 하는 등의 동작을 수행하게 할 수 있습니다. 특성에 따라 공격자는 사용자의 계정에 대한 완전한 제어권을 얻을 수 있을 수도 있습니다.

54. CA 인증서 발급 과정

A라는 서버를 만든 기업이 HTTPS를 적용하기 위해 공개키와 개인키를 만듭니다
신뢰할 수 있는 CA 기업에게 공개키 관리를 부탁하며 계약을 맺습니다
계약이 완료된 CA 기업은 A 서버의 공개키, 해당 기업의 이름, 공개키 암호화 방법을 담은 인증서를 만들고 해당 인증서를 CA 기업의 개인키로 암호화해서 A 서버에게 제공합니다
A 기업은 직접적인 공개키가 아닌 암호화된 인증서를 보유하게 됩니다.

55. 웹 서버와 웹 애플리케이션 서버에 대해 차이

웹 서버는 HTTP 요청을 받아 정적인 웹 페이지 형태로 응답을 처리해 반환하는 프로그램입니다 반면 웹 어플리케이션 서버는 사용자 요구사항에 맞는 다양한 로직을 처리하여 동적 컨텐츠를 제공하는 역할을 합니다 처리 속도를 위해 정적인 처리는 웹 서버를 통해 하고 동적인 처리는 웹 어플리케이션 서버가 담당합니다.

56. MAC 주소와 IP 주소와의 차이점

MAC 주소는 데이터 링크 계층에서 사용하는 네트워크 인터페이스에 할당된 고유 식별 주소, 고유 식별자이고 물리 주소나 하드웨어 주소라고도 불립니다.
MAC 주소는 네트워크 인터페이스 컨트롤러를 만든 회사에서 할당하여 하드웨어에 저장됩니다 이는 다른 MAC 주소와 겹치지 않는 고유의 주소를 할당하고 48비트로 구성되어있습니다. IP 주소는 보낸 주소에서부터 도착지 주소까지의 경로를 찾기 위해 필요한 주소입니다. MAC 주소는 한 주소 내에서 다양한 기기들이 있을 때 해당 기기들이 각각 어떤 기기들인지 식별하기 위하여 필요한 주소입니다

57. ICMP(Internet Control Message Protocol)

ICMP는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜입니다. ICMP는 해당 호스트가 없거나 해당 포트에 대기중에 서버 프로그램이 없는 등의 에러 상황이 발생할 경우 IP헤더에 기록되어 있는 출발지 호스트로 이러한 에러에 대한 상황을 보내주는 역할을 수행하게 됩니다. 에러 메세지로는 대표적으로 2가지가 있습니다
Destination Unreachable : 목적지에 도달하지 못함
Time Exceeded : 시간이 오래 결려 목적지에 도달하지 못함.
그 밖에도 Redirect 등의 에러메세지가 있습니다.

58. IGMP (Internet Group Management Protocol)

멀티캐스팅 데이터의 수신을 위해서 사용되며 호스트가 멀티캐스트 그룹 구성원을 인접한 라우터로에게 알리는 프로토콜입니다.

59. ARP (Address Resolution Protocol - 주소 결정 프로토콜)

IP 주소(논리주소) -> MAC 주소(물리주소, LAN 카드 주소)
ARP 프로토콜은 IP Address를 이용하여 물리적인 네트워크 주소(MAC)를 얻는데 사용되며 ARP를 이용하여 IP Address가 중복되어 사용되는지 찾을 수 있습니다.

60. 프록시 서버

프록시 서버란 클라이언트가 자신을 거쳐 다른 네트워크에 접속할 수 있도록 중간에서 대리해주는 서버를 말합니다. 즉 프록시 서버는 서버와 클라이언트 사이에서 요청과 응답을 처리하는 역할을 합니다
프록시 서버의 사용 목적은 캐시 데이터를 사용하기 위함이다. 프록시 서버 중 일부는 프록시 서버에 요청된 내용을 캐시를 사용해 저장해둔다. 그러면 캐시에 저장되어 있는 내용에 대한 재요청은 서버에 따로 접속할 필요가 없이 저장된 내용을 그대로 돌려주면 되기 때문에 전송 시간을 절약할 수 있고 외부 트래픽을 줄임으로써 네트워크 병목현상도 방지할 수 있습니다
보안 목적으로도 많이 사용됩니다. 프록시 서버가 중간에 경유하게 되면 IP를 숨기는 것이 가능하기 때문입니다. 또한 프록시 서버를 방화벽으로 사용하기도 합니다
또한 접속 우회에 사용됩니다. 간혹 접속이 제한되는 사이트가 있는데 IP를 검사하여 한국에서의 접속임을 감지합니다. 이런 경우 프록시 서버를 사용하면 접속을 다른 나라로 우회할 수 있게 됩니다.

61. DNS 관련 명령어를 몇가지

nslookup이 있습니다. 이는 DNS 서버에 질의하여 도메인의 정보를 조회하는 명령어입니다.
dig는 nslookup보다 상세한 정보를 제공하는 도구입니다
host 명령어는 DNS 레코드를 조회하는 명령어입니다. 간단한 구문으로 IP주소나 도메인의 DNS 정보를 빠르게 확인할 수 있습니다.

62. telnet과 ssh의 차이

telnet과 ssh는 모두 원격으로 장비에 접속하여 명령을 실행할 수 있게 해주는 프로토콜입니다. telnet은 암호회를 하지 않고 정보를 평문으로 전송하기 때문에 사용자 정보등이 도청될 수 있습니다. 그렇기 때문에 요즘에는 보안이 중요한 환경에는 사용을 거의 하지 않습니다. 하지만 ssh는 모든 통신을 암호화하여 데이터의 기밀성을 유지합니다. 그래서 업무를 하다 보면 telnet보다는 ssh를 거의 사용합니다.

0개의 댓글