❓OSI 7계층이란 무엇인가요?
OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 모든 장치들이 서로 통신할 수 있도록 일종의 통일된 표준 모델을 만든 것이라고 할 수 있다.
네트워크 7계층을 나눈 이유는 이렇게 나눴을 때 데이터가 교환되는 커다란 하나의 과정을 각각의 특징에 따라 단계별로 파악할 수 있어 이해하기가 쉽고, 통신 과정 중에 이상이 생겼을 때 어떤 단계에 이상이 생겼는지를 파악해서 다른 단계의 장비 및 소프트웨어 등을 건드리지 않고도 문제를 해결할 수 있기 때문이다.
❓OSI 7계층의 각 계층에 대해서 설명해주세요.
1계층 물리 계층: 물리적인 장치에 의해 전기적 신호가 왔다갔다 하는 계층이다. 랜선(이더넷케이블), 리피터(신호 증폭 장치), 허브 등이 있다.
2계층 데이터 계층: 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리해 신뢰성 있는 데이터 전송을 가능하게 해주는 계층. MAC 주소를 가지고 통신을 한다. 브리지(네트워크 세그먼트 연결, LAN 확장), 스위치(스위칭: 데이터 전송 경로를 선택. L2 스위치는 MAC 주소를 가지고 스위칭한다) 등이 있다.
* MAC 주소: NIC에 대한 식별자.
3계층 네트워크 계층: 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층. 라우터와 L3 스위치가 있다. 라우터는 라우팅 테이블을 기반으로 특정 목적지에 데이터를 전달하는 가장 효율적인 경로(인터페이스)를 결정한다.
* 스위치와 라우터: 기기는 스위치를 통해 로컬로 연결되고 네트워크는 라우터를 통해 다른 네트워크에 연결된다.
ip주소는 호스트에 대한 식별자다. 호스트란? 인터넷에 연결된 컴퓨터.
IPv4 주소 길이 32bit. 2^32 ≒ 43억개의 경우의 수가 있다.
IPv6 주소 길이 128bit.
4계층 전송 계층: 통신을 활성화하기 위한 계층. 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 하는 서비스를 제공한다. TCP/UDP 연결이 여기에 속한다.
Port 번호는 서비스 식별자.
5계층 세션 계층: 양 끝단의 응용프로세스가 통신을 관리하기 위한 방법을 제공한다. 세션을 유지하고 만들고 중단하는 역할을 한다.
6계층 표현 계층: 응용 계층으로 전달하거나 응용 계층에서 전달받은 데이터를 인코딩하고 디코딩하는 역할을 한다.
7계층 응용 계층: 사용자의 응용 프로세스가 작동하는 계층이며 실제로 사용자에게 보이는 부분이다.
❓OSI 7계층과 TCP/IP 4계층을 비교해 설명해주세요.
TCP/IP는 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약 (프로토콜)의 모음이다. 네트워크 연결 계층, 인터넷 계층, 전송 계층, 응용 계층으로 이루어져 있다.
- TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수한 반면, OSI 7 Layer는 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되어 있다.
- OSI 7 Layer는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 결정하는 데 사용되는 반면에 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.
- TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지 않는다. 세션(Session)과 표현(presentation) 2개의 계층이 TCP/IP프로토콜 그룹에는 없다.
TCP/IP 4계층 더 자세히
1계층 - 네트워크 연결 계층
(1) OSI 7 Layer에서 물리계층과 데이터링크 계층에 해당한다.
(2) OS의 네트워크 카드와 디바이스 드라이버 등과 같이 하드웨어적인 요소와 관련되는 모든 것을 지원하는 계층
(3) 송신측 컴퓨터의 경우 상위 계층으로부터 전달받은 패킷에 물리적인 주소은 MAC 주소 정보를 가지고 있는 헤더를 추가하여 프레임을 만들고, 프레임을 하위계층인 물리 계층으로 전달한다.
(4) 수신측 컴퓨터의 경우 데이터 링크 계층에서 추가된 헤더를 제거하여 상위 계층인 네트워크 계층으로 전달한다.
- CSMA/CD, MAC, LAN, X25, 패킷망, 위성 통신, 다이얼 모뎀 등 전송에 사용
- 프로토콜 : Ehternet(이더넷), Token Ring, PPP
2계층 - 인터넷 계층
(1) OSI 7 Layer의 네트워크 계층에 해당한다.
(2) 인터넷 계층의 주요 기능은 상위 전송 계층으로부터 받은 데이터에 IP패킷 헤더를 붙여 IP패킷을 만들고 이를 전송하는 것이다.
- 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅 기능을 담당
- 프로토콜 : IP, ARP, RARP, ICMP, OSPF
3계층 - 전송 계층
(1) OSI 7 Layer에서 전송계층에 해당한다.
(2) 네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 전송기능을 제공한다.
(3) 시스템의 논리주소와 포트를 가지고 있어서 각 상위 계층의 프로세스를 연결해서 통신한다.
(4) 정확한 패킷의 전송을 보장하는 TCP와 정확한 전송을 보장하지 않는 UDP 프로토콜을 이용한다.
(5) 데이터의 정확한 전송보다 빠른 속도의 전송이 필요한 멀티미디어 통신에서 UDP 를 사용하면 TCP보다 유용하다.
- 통신 노드 간의 연결을 제어하고, 자료의 송수신을 담당
- 프로토콜 : TCP, UDP
4계층 - 응용 계층
(1) OSI 7 Layer에서 세션계층 , 표현 계층, 응용 계층에 해당한다. (5, 6, 7계층)
(2) 응용프로그램들이 네트워크서비스, 메일서비스, 웹서비스 등을 할 수 있도록 표준적인 인터페이스를 제공한다.
- TCP/IP 기반의 응용 프로그램을 구분할 때 사용한다.
- 프로토콜 : HTTP, FTP, Telnet, DNS, SMTP
❓캡슐화와 역캡슐화에 관해 설명해주세요.
캡슐화와 역캡슐화는 데이터를 한쪽에서 다른 쪽으로 전송하는 과정에서 일어나는 데이터 처리 과정을 말한다. 데이터를 전송했을 때 상위 계층에서 하위 계층으로 데이터가 타고 내려가면서 각 계층에서 필요한 정보를 담은 헤더를 붙여나간다. 이 과정을 캡슐화라고 한다.
데이터가 상대편에 도착하면 다시 하위 계층에서 상위 계층으로 데이터가 올라가는데 이때 헤더를 제거해 나가는 것을 역캡슐화라고 한다. 역캡슐화를 거쳐 마지막 응용 계층에 도달하면 전달하려던 원본 데이터가 나타나게 된다.
헤더는 캡슐화와 역캡슐화 시 덧붙이는 목적지 정보, 출발지 정보, 에러 체크 등 필요한 정보를 담고 있다.
각 계층에서 동작하는 데이터를 말할 때 이더넷 헤더와 트레일러가 붙은 데이터의 단위는 프레임, IP 헤더가 붙은 데이터의 단위는 패킷, TCP헤더가 붙은 데이터의 단위는 세그먼트, 응용 계층에서 동작하는 데이터는 메시지(혹은 데이터)라고 한다.
❓TCP와 UDP를 비교 설명해주세요.
TCP는 연결지향, 신뢰성이 있는 4계층 프로토콜입니다. 연결지향 프로토콜이므로 서버와 클라이언트는 통신하기 전에 먼저 연결을 수립해야만 합니다.
이 연결은 3 way handshake라는 과정을 통해서 수립하게 됩니다. 서버는 클라이언트에게 SYN을 보내 클라이언트로 부터 ACK+SYN을 받습니다. 그 다음 그 응답으로 ACK을 보내 연결을 수립합니다.
TCP의 기능으로는 신뢰성 보장과 흐름제어, 혼잡제어 기능이 있습니다.
신뢰성 보장은 데이터를 보내고 상대방에서 응답이 오는 것을 확인하면 정상적으로 도착했다고 판단하며, 응답이 없을 경우 보낸 데이터가 유실되어 패킷을 재전송하게 됩니다.
흐름 제어는 stop and wait, 슬라이딩 윈도우 방식으로 송신 측의 데이터 전송량을 제어합니다. stop and wait는 매번 전송한 패킷에 대해 확인 응답을 받아야 그 다음 패킷을 보낼 수 있는 방법이고, 슬라이딩 윈도우는 수신측의 슬라이딩 윈도우 크기 만큼 송신측에서 확인 응답없이 세그먼트를 전송할 수 있도록 제어하는 기법입니다.
혼잡제어는 라우터에 데이터가 몰리게 되면 모든 데이터를 처리할 수 없게 되므로 응답이 오지 않을 경우 계속 데이터를 재전송하게 되어 오버플로우나 데이터 유실이 발생할 수 있습니다. 따라서 송신 측에서 네트워크 혼잡을 피하기 위해 데이터의 전송 속도를 강제적으로 줄여 혼잡 제어를 하게 됩니다.
TCP의 연결 해제는 4 way handshake로 진행됩니다. 클라이언트는 서버에게 FIN을 보내고 서버는 응답으로 ACK를 보내고 모든 데이터를 다 전송했다면 FIN을 보냅니다. 클라이언트는 응답으로 ACK를 보내고 서버는 소켓을 닫고 TIME_WAIT 시간이 끝나면 클라이언트도 소켓을 닫아 연결을 종료합니다.
UDP는 비연결성, 신뢰성이 없는 4계층 프로토콜입니다. 데이터를 데이터그램 단위로 처리하며 데이터그램은 독립적인 관계를 지닌 패킷을 말합니다.
신뢰성이 보장되지 않기 때문에, 데이터 손실이 발생할 수 있습니다. 영상 스트리밍과 같은 서비스는 신뢰성보다 빠른 속도를 요구하기 때문에 조금 유실되어도 영상의 품질에 지장이 없어 UDP를 사용합니다.
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 모두 인터넷 프로토콜 스위트의 일부로서, 네트워크에서 데이터를 전송하기 위한 프로토콜입니다. 하지만 이 둘은 전송 방식에서 큰 차이가 있습니다.
- 연결지향성
- TCP는 연결 지향적인 프로토콜이며, 3-way handshake 과정을 통해 연결을 설정한 후 데이터를 전송합니다. 반면, UDP는 비연결 지향적인 프로토콜로서, 데이터를 전송하기 전에 연결 설정 과정이 없습니다.
- 신뢰성
- TCP는 데이터 전송 시에 데이터의 손실, 중복, 순서 오류 등을 방지하기 위해 패킷을 재전송하거나 순서를 재조정하는 기능을 제공합니다. 이러한 기능은 데이터 전송의 신뢰성을 보장하지만, 전송 시간이 느려질 수 있습니다. 반면, UDP는 데이터 전송 시에 이러한 기능을 제공하지 않기 때문에 신뢰성이 떨어지지만, 전송 시간이 빠르다는 장점이 있습니다.
- 헤더 크기
- TCP는 데이터 전송 시에 각 패킷에 대한 제어 정보를 포함하는 헤더의 크기가 큽니다. 반면, UDP는 간단한 헤더 구조로 이루어져 있기 때문에 헤더의 크기가 작습니다.
- 사용 용도
- TCP는 파일 전송, 이메일, 웹 사이트 접속 등 데이터 전송이 정확성과 순서가 중요한 서비스에 사용됩니다. 반면, UDP는 오디오, 비디오, 스트리밍 등 데이터 손실이나 지연이 있어도 일부 데이터만 전송되어도 무방한 서비스에 사용됩니다.
즉, TCP는 연결 지향적이며 신뢰성이 높지만 전송 속도가 느리고 헤더의 크기가 크고, UDP는 비연결 지향적이며 신뢰성은 떨어지지만 전송 속도가 빠르고 헤더의 크기가 작습니다. 따라서 어떤 프로토콜을 사용할지는 전송하는 데이터의 특성과 요구 사항에 따라 결정됩니다.
'기술면접' 카테고리의 다른 글
[기술면접 스터디] MVC 패턴 (0) | 2023.04.10 |
---|---|
[기술면접 스터디] 리액트 (3) | 2023.04.03 |