네트워크 면접질문
Q1.TCP와 UDP에 대해서 설명해주세요.
TCP의 특징
- 연결형 서비스
- 가상회선 방식으로 패킷을 교환한다.
- 전송 순서를 보장
- 수신여부를 확인한다.
- 1대1 통신이다.
- 신뢰성이 높다
- 속도는 상대적으로 UDP에 비해 느리다.
3-way handshaking
과정을 통해 연결을 설정하고4-way handshaking
을 통해 해제한다.- 흐름제어 및 혼잡제어를 제공.
Q) 흐름제어(Flow Control)와 혼잡제어(Congestion Control)이란?
흐름제어 는 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것입니다. 예를 들어 송신하는 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신자에서 문제가 발생하기 때문입니다.
혼잡제어 는 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것입니다. 만약 정보의 소통량이 과다하면
패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막습니다.
UDP의 특징
- 비연결형 서비스이다.
- 데이터그램 방식으로 패킷 교환
- 전송 순서가 바뀔 수 있다.
- 수신 여부를 확인하지 않는다.
- 1대1 or 1대N or N대N 통신이다.
- 신뢰성이 낮다.
- 속도가 상대적으로 TCP에 비해 빠르다
Q2. GET과 POST의 차이
GET
GET 은 서버로부터 정보를 조회하기 위해 설계된 메소드입니다. GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송 합니다.
쿼리스트링 이란?
URL의 끝에
?
와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라고 부릅니다. 만약, 요청 파라미터가 여러 개이면&
로 연결합니다.
GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다.
- js, css, 이미지 같은 정적 컨텐츠는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없습니다. 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용합니다. 그래서 프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시돼 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생합니다. 이 때는 브라우저의 캐시를 지워주면 다시 컨텐츠를 조회하기 위해 서버로 요청을 보내게 됩니다.
POST
POST 는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송합니다. HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송 할 수 있습니다.
그래서 POST 요청은 GET과 달리 대용량 데이터를 전송 할 수 있습니다. 이처럼 POST는 데이터가 Body로 전송되고 내용이 눈에 보이지 않아 GET보다 보안적인 면에서 안전 하다고 생각할 수 있지만, POST 요청도 크롬 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송 해야 합니다.
Q3. www.example.com에 접속하는 과정 설명
- 호스트 네임을 통해 DNS에서 IP주소를 받아온다.
- IP주소를 통해 서버와 커넥션을 맺는다.
- 서버는 받은 요청에 따라 이를 처리하고 브라우저가 볼 수 있는 HTML을 구성해 브라우저에게 준다.
- 브라우저는 HTML을 해석해 화면에 띄운다.
Q4. DHCP란?
Dynamic Host Configuration Protocol
DHCP란 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜.
네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미하고, 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜
-DHCP 장점
PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능하고, IP를 자동으로 할당해주기 때문에 IP 충돌을 막을 수 있습니다.
-DHCP 단점
DHCP 서버에 의존되기 때문에 서버가 다운되면 IP 할당이 제대로 이루어지지 않습니다.
Q5. SSL 통신과정 설명
Q6. http2.0이란?
기존 HTTP/1.x 버전의 성능향상에 초점을 맞춘 프로토콜
- HTTP 메시지 전송 방식의변화
- 바이너리 프레이밍 계층 사용
- 파싱, 전송속도 증가, 오류발생 가능성 감소
- 바이너리 프레이밍 계층 사용
- 스트림을통한 양방향 전송을 통해 요청과 응답 멀티플렉싱이 가능
- Head of Line Blocking 해결
- Stream Prioritization
- 리소스간 우선 순위를 설정 가능.
- 서버 푸시 가능.
- Header 압축. 헤더의 크기를 줄여 페이지 로드시간 감소.
Q7. 프록시 서버의 기능
클라이언트가 프록시 서버를 통해서 다른 네트워크 서비스에 간접적으로 접근을 할 수 있게 하는 것을 말한다. 프록시 서버는 요청된 내용들을 캐시에 저장을하고 다음에 같은 요청이 들어온다면 캐시에 저장된 정보를 제공함으로써 전송시간을 줄일 수 있다.
Q8. unicast, multicast, broadcast 설명
- 유니캐스트(Unicast) : 1 대 1
- 정보를 전송하기 위한 프레임에 자신의 MAC 주소와 목적지의 MAC 주소를 첨부하여 전송하는 방식을 말한다.
- tcp
- 멀티 캐스트(Multicast) : 1 대 다
- 네트워크에 연결되어 있는 시스템중 일부에게만 정보를 전송하는 것.
- udp
- 브로드 캐스트(Broadcast) : 1 대 다
- 로컬 네트워크에 연결되어 있는 모든 시스템에게 프레임을 보내는 방식.
- 통신하고자 하는 시스템의 MAC주소를 알지못하는 경우, 네트워크에 있는 모든 시스템에게 알리는 경우, 라우터끼리 정보를 교환하거나 새로운 라우터를 찾는 경우에 이용이 된다.
- udp
Reference
https://mangkyu.tistory.com/15
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/