- TCP와 UDP에 대해 설명해주세요.
TCP와 UDP는 OSI 7계층 중 전송 계층에서 사용되는 프로토콜입니다. TCP는 서버와 클라이언트라는 두 엔드포인트 사이에 3-way handshake로 TCP 연결을 이루고, 흐름제어, 혼잡제어, 오류제어를 통해 데이터의 신뢰성을 보장합니다. 이에 반해 UDP는 엔드포인트 간 연결을 이루지 않고, 일방향적인 데이터 전달이 이뤄집니다. 따라서 TCP에 비해 속도가 빠르다는 장점을 가지고 있습니다.
- TCP와 UDP는 각각 언제 사용하나요?
우선 UDP는 비연결지향적이기 때문에, 속도가 빠르다는 강점을 가지고 있습니다. 이러한 특징으로 스트리밍과 같은 실시간 서비스에 적합합니다. TCP는 UDP를 사용하지 않는 대부분의 상황에서 사용됩니다. HTTP나 HTTPS, FTP 등과 같은 서비스를 할 때 TCP 프로토콜을 이용하며, 데이터에 대한 신뢰성이 보장되어야 할 때 적합합니다.
- UDP가 데이터의 신뢰성을 보장하고 싶다면 어떡하나요?
UDP는 데이터에 대한 신뢰성을 보장하지 않는 것이지, 못하는 것이 아닙니다. 따라서 UDP 헤더에서 신뢰성을 위한 필드를 추가해 안정성을 높일 수 있으나, 굳이 수고를 들이는 것보다 TCP 프로토콜을 이용하는 편이 낫다고 생각합니다.
- TCP 헤더에 포함된 필드를 아는 대로 말씀해주세요.
TCP 헤더에는 송신 측 Port 번호, 수신 측 Port번호, Control Flag와 Sequence Number, Ack Number, Window Size 등의 필드가 존재합니다. Port번호는 UDP 헤더에도 공통적으로 존재하는 필드이며, Control Flag, Sequence Number, Ack Number, Window Size는 TCP에만 존재하는 필드입니다.
- Control Flag 필드는 어떤 기능을 하나요?
Control Flag는 SYN, ACK, FIN를 포함한 6개의 플래그를 갖고 있습니다. 비트 단위로 0일 경우 플래그 OFF 상태, 1일 경우 플래그 ON 상태를 의미합니다. SYN 플래그는 TCP 연결을 수행하고, ACK 플래그는 확인 응답을 의미하고, FIN 플래그는 TCP 연결 종료합니다.
- Sequence Number와 ACK Number는 무엇이고, 어떤 기능을 하나요?
Sequence Number는 데이터의 순서를 나타냅니다. 보통 이전에 보냈던 Sequence Number에 1씩 증가시키며, 처음 생성되는 Sequence Number는 난수입니다. ACK Number는 다음에 받아야 할 데이터의 순서입니다. ACK Number 또한 1씩 증가되며, 받은 패킷의 Sequence Number에 1을 더한 값을 ACK Number에 담습니다.
Sequence Number와 ACK Number는 패킷의 순서를 재조립해 순서에 맞게 데이터가 전달되도록 돕고, 데이터가 유실됐는지 확인해 재전송을 요구하는 기능을 합니다.
- Window Size는 어떤 기능을 하나요?
Window Size는 TCP에서 흐름제어 기능을 합니다. 서버에서 전송하는 데이터의 양과 클라이언트에서 처리하는 데이터의 속도가 달라, 클라이언트의 버퍼가 넘치는 일이 발생할 수 있습니다. 따라서 클라이언트의 남은 버퍼 사이즈를 Window Size에 담아 요청하고, 서버는 Window Size에 맞는 데이터를 전송함으로써 패킷의 흐름을 제어합니다.
- UDP 헤더에 포함된 필드를 아는 대로 말씀해주세요.
UDP 헤더에는 송신 측 Port 번호, 수신 측 Port 번호, 체크섬 등이 존재합니다. UDP는 체크섬을 이용해 데이터의 오류를 확인할 수 있지만, 오류에 대한 처리나 재전송 등의 기능은 제공하고 있지 않습니다.
- UDP에서 패킷이 유실된다면 어떡하나요?
UDP에서 패킷이 유실된다면 그대로 무시될 것 같습니다. 네트워크에서 들어온 패킷을 버퍼에 저장해 두는데, 그 패킷을 순서대로 처리함으로써 패킷 순서가 바뀌어도 혹은 패킷이 유실되어도 신경 쓰지 않고, 현재 버퍼에 담긴 패킷을 실행하는 데에 집중할 것 같습니다.
- DNS는 UDP 프로토콜을 사용하는데, 그 이유가 무엇일지 고민하고 설명해주세요.
DNS가 UDP 프로토콜을 이용하는 이유는 속도를 중요시하기 때문입니다. DNS는 도메인 네임을 IP 주소로 변환해 줍니다. 따라서 전 세계 많은 클라이언트에서 요청이 들어오고 빠르게 응답하는 것이 중요합니다. 또한 한 번의 응답이 제대로 전달된다면 더 이상의 추가적인 데이터를 필요로 하지 않기 때문에 UDP를 이용합니다.
'면접 질문 > 네트워크' 카테고리의 다른 글
[네트워크] HTTP 메서드와 Restful API 면접 질문 및 답변 정리 (0) | 2024.03.13 |
---|---|
[네트워크] HTTP와 HTTPS, HTTP 헤더 면접 질문 및 답변 정리 (1) | 2024.03.07 |
[네트워크] TCP 3-way handshake 면접 질문 및 답변 정리 (1) | 2024.03.07 |
[네트워크] 검색 창에 google.com을 치면 일어나는 일 (0) | 2024.02.19 |
[네트워크] OSI 7계층 면접 질문 및 답변 정리 (0) | 2024.02.19 |
댓글