OSI 7계층 관련
- OSI 7 계층의 각 계층에 대해 설명
- 전송계층과 데이터링크 계층 모두 신뢰성 관련 기능을 제공하는데, 어떤 차이가 있는지?
- OSI 7계층은 네트워크 통신을 단계적으로 나누어 설명하는 모델로, 각 계층은 특정한 역할을 담당
물리 계층 -> 데이터 전송을 위한 하드웨어적 연결과 신호 변환을 담당
데이터링크 계층 -> 프레임 단위로 데이터를 전송하며, 오류를 검출하고 수정하는 역할을 한다. 로컬 네트워크 환경에서 신뢰성을 보장
네트워크 계층 -> 데이터를 패킷 단위로 처리하며, 목적지까지 최적의 경로를 찾아 전달한다. IP 주소와 라우터가 이 계츠으이 주요 요소이다.
전송 계층 -> 데이터의 순서, 손실 여부를 확인하고, 흐름 제어나 재전송 등의 기능을 제공, 대표적인 프로토콜은 TCP와 UDP이다.
세션 계층 -> 통신 세션을 생성, 유지, 종료하며, 연결 상태를 관리, 데이터 교환을 위한 세션 관리 기능 제공
표현 계층 -> 데이터의 형식 변환, 암호화, 압축 등을 담당하고, 서로 다른 데이터 표현 방식을 통일해준다.
응용 계층 -> 사용자가 직접 접근하는 계층으로, 이메일, 웹 브라우저와 같은 애플리케이션이 사용하는 네트워크 서비스를 제공한다.
- 데이터링크 계층은 같은 네트워크 내에서 작동하며, 프레임 단위로 오류를 검출하고 수정한다. 주로 로컬 영역 네트워크(LAN)에서 신뢰성을 보장하며, 데이터 전송 중 충돌을 해결하거나 재전송을 처리한다.
전송 계층은 종단 간 통신에서 데이터를 관리한다. 데이터 세그먼트를 올바른 순서로 재조립하고, 손실된 데이터가 있으면 재전송을 요청한다. 또한 송신 측과 수신 측의 데이터 흐름을 조절하는 흐름 제어와 혼잡 제어 기능을 제공한다.
데이터링크 계층은 네트워크 내부에서의 신뢰성을, 전송 계층은 송신자와 수신자 간 통신 전체에서 신뢰성을 보장한다
전송계층 관련
- 전송계층이 데이터 분실을 확인하는 방법에 대해 설명
- 전송계층이 제공하는 신뢰성 관련 기능 중, 흐름제어에 대해 설명
- 전송계층이 제공하는 신뢰성 관련 기능 중, 오류제어(재전송 프로토콜)에 대해 설명
- 전송계층이 제공하는 신뢰성 관련 기능 중, 혼잡제어에 대해 설명
- 전송계층은 ACK(Acknowledgment)를 사용해 데이터 분실 여부를 확인한다. 송신자가 데이터를 보내면 수신자가 ACK를 보내고, 정해진 시간 안에 ACK가 도착하지 않으면 데이터가 손실된 것으로 판단하고 재전송한다.
- 흐름 제어는 송신자와 수신자의 처리 속도 차이를 조절하는 기능이다. 수신자가 처리할 수 있는 데이터 양을 알려주면, 송신자는 이를 기반으로 데이터를 전송해 버퍼 오버플로우(
프로그램이 실행될 때 입력받는 값이 버퍼를 가득 채우다 못해 넘쳐흘러 버퍼 이후의 공간을 침범하는 현상)를 방지한다. - 오류 제어는 데이터 전송 중 손실되거나 손상된 데이터를 재전송하는 기능이다. 수신자는 오류를 검출하면 송신자에게 NACK(Negative Acknowledgment) 또는 ACK 누락으로 이를 알리고, 송신자는 해당 데이터를 재전송한다.
- 혼잡 제어는 네트워크 혼잡을 완화하기 위해 데이터 전송 속도를 조절하는 기능이다. 송신자는 네트워크 상태를 모너링하고, 혼잡이 감지되면 전송 속도를 줄여 데이터 손실을 방지한다.
DNS와 도메인 처리 과정
- DNS가 무엇인지 설명
- www.google.com 도메인을 브라우저에 입력했을 때 일어나는 일을 순차적으로 설명
- DNS(Domain Name System)는 사람이 이해하기 쉬운 도메인 이름을 컴퓨터가 이해할 수 있는 IP주소로 변환하는 시스템이다. 인터넷의 전화번호부 역할을 하며, 사용자가 도메인 이름을 입력하면 IP 주소를 찾아 서버와 통신할 수 있도록 도와준다.
- 캐시 확인 : 브라우저, OS, 또는 로컬 DNS 서버에서 www.google.com의 IP 주소가 캐시되어있는지 확인, DNS 요청 : 캐시에 없으면, DNS 서버에 도메인 이름의 IP 주소를 요청한다, DNS 서버 탐색 (루트 DNS 서버 -> .com TLD DNS 서버 -> Google의 권한 DNS 서버 순으로 탐색해 IP 주소를 찾는다.), IP 주소 반환 : 찾은 IP 주소를 클라이언트로 반환, 서버 연결 : 브라우저가 반환된 IP 주소로 TCP 연결을 설정하고, HTTP 또는 HTTPS 요청을 보낸다.
서버가 요청을 처리하고 HTML, CSS, JS 등의 데이터를 반환해 브라우저가 웹 페이지를 렌더링한다.
TCP와 연결 관리
- TCP Connection 시 3-way handshaking에 대해 설명
- TCP Connection을 해제하는 경우에 대해 설명
- 연결해제 시 4-way handshacking을 사용하는 이유
- server가 Client에게 FIN 플래그를 전송하기 전에 전송한 패킷이 지연이나 유실로 인해 FIN 패킷보다 늦게 도착하면 어떻게 처리 하는지
- TCP는 신뢰성 있는 연결을 위해 3-way Handshaking을 사용, SYN -> 클라이언트가 서버에 연결 요청을 보낸다, SYN-ACK -> 서버가 요청을 받고, 연결 확인 응답을 클라이언트로 보낸다, ACK -> 클라이언트가 응답을 확인하고 연결을 완료한다.
이 과정으로 양측이 데이터를 전송할 준비가 되었음을 확인
- TCP 연결 해제는 4-way Handshaking을 사용, 클라이언트가 FIN 플래그를 보내 연결 종료를 요청 -> 서버가 ACK를 보내 요청을 확인 -> 서버가 처리 중인 데이터를 마무리한 뒤 FIN 플래그를 보낸다. -> 클라이언트가 ACK로 응답하여 연결이 종료된다.
- 연결해제는 데이터 손실을 방지하기 위해 양측이 각각 독립적으로 종료 과정을 처리한다. 서버가 아직 처리 중인 데이터가 있을 수 있으므로, 먼저 클라이언트의 FIN 요청을 확인한 후, 서버가 데이터를 모두 처리한 뒤 FIN을 전송해 종료를 완료한다.
- TCP는 시퀀스 번호를 사용해 패킷 순서를 관리, FIN 플래그 이후 도착한 데이터 패킷은 시퀀스 번호를 확인하여 정상적으로 수신된 데이터인지 판단, 만약 데이터가 유효하다면 서버는 데이터를 처리하고, 그렇지 않다면 무시한다. FIN 패킷 자체가 연결 종료의 신호일 뿐, 데이터의 순서를 관리하는 것은 시퀀스 번호가 담당한다.
포트와 소켓
- 포트? 소켓?
- 포트는 IP 주소 내에서 특정 서비를 구분하기 위한 숫자이고, 하나의 컴퓨터(또는 IP)에서 여러 애플리케이션이 네트워크를 사용할 수 있도록 구분하는 역할을 한다.
- 소켓은 IP 주소 + 포트 번호로 구성된 네트워크 통신의 엔드포인트이다, 클라이언트와 서버 간 데이터를 주고받기 위해 생성되며, 특정 연결을 식별한다.
TCP와 UDP 비교
- TCP와 UDP의 차이
- UDP가 TCP에 비해 갖는 장점
- UDP에 Checksum 필드가 있는 이유
- TCP는 연결 기반 프로토콜로, 데이터 전송의 신뢰성을 보장한다. (데이터 순서 보장, 재전송, 흐름 제어), UDP는 연결 없이 빠르게 데이터를 전송하는 프로토콜로, 신뢰성보다는 속도가 중요할 때 사용된다.
- UDP가 TCP에 비해 갖는 장점은 연결 설정 과정(3-way Handshaking)이 없어서 빠르고 가볍다. 데이터 전송에 지연이 적고, 실시간 통신에 적합하다.
- UDP에 Checksum 필드가 있는 이유는 데이터가 전송 중 손상되었는지 확인하기 위해 오류 검출 기능을 제공한다. Checksum은 데이터의 무결성을 검사하며, 손상된 데이터는 폐기된다. UDP는 신뢰성은 보장하지 않지만, 최소한의 오류 검출 기능은 갖추고 있다.
'면접준비' 카테고리의 다른 글
CS 지식 정리 - 운영체제(1) (1) | 2025.01.05 |
---|---|
CS 지식 정리 - 네트워크(2) (1) | 2025.01.04 |
CS 지식 정리 - 데이터베이스(2) (1) | 2025.01.02 |
CS 지식 정리 - 데이터베이스(1) (0) | 2025.01.01 |
CS 지식 정리 - 자료구조 (2) (0) | 2024.12.31 |