-
네트워크 (1)Computer Science 2024. 4. 18. 22:03
목차
- 네트워크 기초
- TCP/IP 4계층 모델
2.1 네트워크의 기초
네트워크란 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미합니다. 여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미합니다.
2.1.1 처리량과 지연 시간
처리량(throughput)이란 링크를 통해 전달되는 단위 시간당 데이터양을 말합니다.
단위로는 bps(bits per second)를 씁니다. 초당 전송 또는 수신되는 비트 수를 의미합니다.
처리량은 다음과 같은 상황에 영향을 받습니다.
- 사용자들이 많이 접속할 때마다 커지는 트래픽
- 네트워크 장치 간의 대역폭
- 네트워크 중간에 발생하는 에러
- 장치의 하드웨어 스펙
지연시간(latency)이란 요청이 처리되는 시간을 말하며 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간을 의미합니다. 지연 시간은 다음과 같은 상황에 영향을 받습니다.
- 매체 타입(무선, 유선)
- 패킷 크기
- 라우터의 패킷 처리 시간
패킷이란 네트워크에서 데이터의 전송 단위를 말합니다. 패킷은 다음과 같은 구조로 구성됩니다:
- 헤더(Header):
- 목적지 주소 - 패킷이 전송되어야 할 대상의 네트워크 주소
- 출발지 주소 - 패킷을 전송한 장치의 네트워크 주소
- 프로토콜 정보 - 패킷에 담긴 데이터가 어떤 프로토콜(TCP, UDP 등)을 사용했는지 나타냄
- 길이 - 패킷의 크기
- 기타 정보 - 패킷 순서, 분할 여부 등
- 데이터(Payload):
- 실제 전송하고자 하는 데이터 콘텐츠
- 트레일러(Trailer):
- 오류 검사 정보 - 패킷이 온전히 전송되었는지 검사하는 체크섬 등
네트워크 장비들은 이 패킷 구조를 이용해 데이터를 효율적으로 전송하고 처리합니다. 패킷의 헤더 정보를 확인하여 데이터의 목적지와 프로토콜을 파악하고, 패킷을 중간에서 라우팅 하거나 필터링할 수 있습니다. 또한 트레일러의 오류 검사 정보를 통해 패킷 전송의 무결성을 확인할 수 있습니다.
2.1.2 네트워크 토폴로지와 병목 현상
네트워크 토폴로지(netwrok topology)는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 의미합니다. 다음과 같은 토폴로지 등이 존재합니다.
- 트리 토폴로지
- 버스 토폴로지
- 스타 토폴로지
- 링형 토폴로지
- 메시 토폴로지
병목현상
네트워크 구조라 불리는 토폴로지가 중요한 이유는 병목 현상을 찾을 때 중요한 기준이 되기 때문입니다. 병목 현상이란 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말합니다. 서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목 현상이 생겨 사용자는 웹 사이트로 들어가지 못하는 상황이 발생할 수 있습니다.
게이트웨이
네트워크에서 게이트웨이(Gateway)는 다음과 같은 중요한 역할을 합니다:
- 서로 다른 네트워크 간 라우팅 및 통신
- 게이트웨이는 서로 다른 네트워크 간에 데이터를 전달하는 통로 역할을 합니다.
- 서로 다른 네트워크 프로토콜(IPv4, IPv6 등)을 사용하는 경우에도 게이트웨이가 변환 기능을 수행합니다.
- 네트워크 보안 관리
- 게이트웨이는 방화벽 기능을 제공하여 외부로부터의 불법적인 접근을 차단합니다.
- 네트워크 주소 변환(NAT) 기능을 통해 내부 네트워크의 IP 주소를 외부로 숨길 수 있습니다.
- 네트워크 트래픽 제어
- 게이트웨이는 네트워크 트래픽을 모니터링하고 제어할 수 있습니다.
- 특정 프로토콜이나 포트를 차단하는 등의 정책을 적용할 수 있습니다.
- 네트워크 장비 및 서비스 관리
- 게이트웨이는 DHCP 서버 기능을 제공하여 내부 네트워크 장비에 IP 주소를 자동으로 할당할 수 있습니다.
- DNS 서버 기능을 통해 도메인 이름을 IP 주소로 변환할 수 있습니다.
2.1.3 네트워크 분류
네트워크는 규모를 기반으로 분류할 수 있습니다.
- LAN(Local Area Network)
- MAN(Metropolitan Area Network)
- WAN(Wide Area Network)
LAN
LAN은 근거리 통신망을 의미하며 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영됩니다. 전송 속도가 빠르고 혼잡하지 않습니다.
MAN
MAN은 대도시 지역 네트워크를 나타내며 도시 같은 넓은 지역에서 운영됩니다. 전송 속도는 평균이며 LAN 보다는 더 많이 혼잡합니다.
WAN
WAN은 광역 네트워크를 의미하며 국가 또는 대륙 같은 더 넓은 지역에서 운영됩니다. 전송 속도는 낮으며 MAN 보다 더 혼잡합니다.
2.1.4 네트워크 성능 분석 명령어
애플리케이션 코드상에서는 문제가 없는데 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생되기도 하며, 이는 네트워크 병목 현상일 가능성이 있습니다. 네트워크 병목 현상의 주된 원인은 다음과 같습니다.
- 네트워크 대역폭
- 네트워크 토폴로지
- 서버 CPU, 메모리 사용량
- 비효율적인 네트워크 구성
‘네트워크로부터 발생한 문제점’인 것을 확인한다면 네트워크 성능을 분석해봐야 합니다.
ping
ping(Packet Internet Groper)은 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어입니다. 이를 통해 해당 노드의 패킷 수신 상태와 도달하기까지 시간 등을 알 수 있으며, 해당 노드까지 네트워크가 잘 연결되어 있는지 확인할 수 있습니다.
$ ping google.com -c 5 PING google.com (142.250.207.110): 56 data bytes 64 bytes from 142.250.207.110: icmp_seq=0 ttl=57 time=79.205 ms 64 bytes from 142.250.207.110: icmp_seq=1 ttl=57 time=82.391 ms 64 bytes from 142.250.207.110: icmp_seq=2 ttl=57 time=78.413 ms 64 bytes from 142.250.207.110: icmp_seq=3 ttl=57 time=82.091 ms 64 bytes from 142.250.207.110: icmp_seq=4 ttl=57 time=80.498 ms --- google.com ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 78.413/80.520/82.391/1.558 ms
~ ping www.eazel.net -c 5 PING www.eazel.net (18.67.51.48): 56 data bytes 64 bytes from 18.67.51.48: icmp_seq=0 ttl=247 time=6.366 ms 64 bytes from 18.67.51.48: icmp_seq=1 ttl=247 time=46.016 ms 64 bytes from 18.67.51.48: icmp_seq=2 ttl=247 time=87.729 ms 64 bytes from 18.67.51.48: icmp_seq=3 ttl=247 time=8.819 ms 64 bytes from 18.67.51.48: icmp_seq=4 ttl=247 time=6.677 ms --- www.eazel.net ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 6.366/31.121/87.729/32.044 ms ➜ ~
2.1.5 네트워크 프로토콜 표준화
네트워크 프로토콜이란 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스를 말합니다. 이러한 프로토콜은 기업이나 개인이 발표해서 정하는 것이 아니라 IEEE 또는 IETF라는 표준화 단체가 이를 정합니다.
서로 약속된 인터페이스의 프로토콜을 통해 노드들은 데이터를 주고받을 수 있습니다.
2.2 TCP/IP 4계층 모델
인터넷 프로토콜 스위트(Internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이며, 이를 TCP/IP 4 계층 모델로 설명하거나 OSI 7 계층 모델로 설명하기도 합니다.
2.2.1 계층 구조
TCP/IP (Transmission Control Protocol)
- 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었습니다.
애플리케이션 계층
애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층입니다.
FTP
장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜
SSH
보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호호화 네트워크 프로토콜
HTTP
World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜
SMTP
전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
DNS
도메인 이름과 IP 주소를 매핑해주는 서버, 예를 들어 www.naver.com에 DNS 쿼리가 오면 [Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑한다. 이를 통해 IP 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소를 서비스할 수 있다.
전송 계층
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있으며 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 합니다. 대표적으로 TCP와 UDP가 있습니다.
TCP는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결을 하여 신뢰성을 구축해서 수신 여부를 확인하며 ‘가상회선 패킷 교환 방식’을 사용합니다.
가상회선 패킷 교환 방식은 각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 ‘순서대로’ 도착하는 방식을 말합니다.
UDP는 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 ‘데이터그램 패킷 교환 방식’을 사용합니다.
데이터그램 패킷 교환 방식은 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 ‘순서가 다를 수’ 있는 방식을 뜻합니다.
TCP의 경우 순서를 보장하기 위해 연결 성립 과정과 연결 해제 과정을 거칩니다.
TCP 연결 성립 과정
TCP는 신뢰성을 확보하기 위해 3-웨이 핸드셰이크(3-way handshake)라는 작업을 진행합니다.
SYN: SYNchronization의 약자, 연결 요청 플래그
ACK: ACKnowledgement의 약자, 응답 플래그
Initial Sequence Numbers의 약어, 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호SYN 단계 [SYN-SENT > SYN-RECEIVED] 클라이언트는 서버에 클라이언트 ISN을 담아 SYN을 보냅니다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 이는 장치마다 다를 수 있습니다.
SYN + ACK 단계 [SYN-RECEIVED > ESTABLISHED] 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인 번호로 클라이언트의 ISN + 1을 보냅니다.
ACK 단계 [ESTABLISHED > ESTABLISHED]
클라이언트는 서버의 ISN + 1 한 값인 승인번호를 담아 ACK를 서버에 보냅니다.
인터넷 계층
인터넷 계층은 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층입니다. IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달합니다. 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있습니다.
링크 계층
링크 계층은 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 ‘규칙’을 정하는 계층입니다. 참고로 네트워크 접근 계층이라고도 합니다. 이를 물리 계층과 데이터 링크 계층으로 나누기도 하는데 물리 계층은 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층을 말하며, 데이터 링크 계층은 ‘이더넷 프레임’을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층을 말합니다.
유선 LAN(IEEE802.3)
유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며 전이중화 통신을 씁니다.
전이중화 통신
전이중화 통신(full duplex) 통신은 양쪽 장치가 동시에 송수신할 수 있는 방식을 말합니다. 이는 송신로와 수신로로 나눠서 데이터를 주고받으며 현대의 고속 이더넷은 이 방식을 기반으로 통신하고 있습니다.
무선 LAN(IEEE802.11)
무선 LAN 장치는 수신과 송신에 같은 채널을 사용하기 때문에 반이중화 통신을 사용합니다.
반이중화 통신(half duplex)은 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식을 말합니다. 일반적으로 장치가 신호를 수신하기 시작하면 응답하기 전에 전송이 완료될 때까지 기다려야 합니다. 또한, 둘 이상의 장치가 동시에 전송하면 충돌이 발생하여 메시지가 손실되거나 왜곡될 수 있기 때문에 충돌 방지 시스템이 필요합니다.
계층 간 데이터 송수신 과정
컴퓨터를 통해 다른 컴퓨터로 데이터를 요청한다면 어떠한 일이 일어날까요? HTTP를 통해 웹 서버에 있는 데이터를 요청한다면 어떻게 될까요?
애플리케이션 계층에서 전송 계층으로 필자가 보내는 요청(request) 값들이 캡슐화 과정을 거쳐 전달되고, 다시 링크 계층을 통해 해당 서버와 통신을 하고, 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터가 전송됩니다.
캡슐화 과정
캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정을 말합니다. 애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 ‘세그먼트’ 또는 ‘데이터그램’화 되며 TCP 헤더가 붙여지게 됩니다. 그리고 이후 인터넷 계층으로 가면서 IP 헤더가 붙여지게 되며 ‘패킷’ 화가 되고, 이후 링크 계층으로 전달되면서 프레임 헤더와 프레임 트레일러가 붙어 ‘프레임’ 화가 됩니다.
비캡슐화 과정
비캡슐화 과정은 하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정을 말합니다. 이렇게 캡슐화된 데이터를 받게 되면 링크 계층에서부터 타고 올라오면서 프레임화된 데이터는 다시 패킷화를 거쳐 세그먼트, 데이터그램화를 거쳐 메시지화가 되는 비캡슐화 과정이 일어납니다. 그 이후 최종적으로 사용자에게 애플리케이션의 PDU인 메시지로 전달됩니다.
2.2.2 PDU
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 PDU(Protocol Data Unit)라고 합니다. PDU는 제어 관련 정보들이 포함된 ‘헤더’, 데이터를 의미하는 ‘페이로드’로 구성되어 있으며 계층마다 부르는 명칭이 다릅니다.
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
PDU 중 아래 계층인 비트로 송수신하는 것이 모든 PDU 중 가장 빠르고 효율성이 높습니다. 하지만 애플리케이션 계층에서는 문자열을 기반으로 송수신하는데, 그 이유는 헤더에 authorization 값 등 다른 값들을 넣는 확장이 쉽기 때문입니다.
질문
- 네트워크에서 처리량은 무엇을 의미하나요?
- 처리량은 어떤 상황에 영향을 받나요?
- 네트워크 병목현상은 무엇인가요?
- TCP/IP 가 무엇인가요 ? 각 계층에 대해서 설명할 수 있나요?
- 전송 계층의 대표적인 방식은 무엇이 있고 어떤 차이가 있나요? (키워드: TCP, UDP)
- 헤더의 유무에 대해 설명할 수 있으면 plus
- 계층 간 데이터 송수신 과정에 대해 설명할 수 있나요? (키워드: 캡슐화, 비캡슐화)
- 전송 계층의 대표적인 방식은 무엇이 있고 어떤 차이가 있나요? (키워드: TCP, UDP)
- 네트워크에서 PDU에 대해 알고 있나요?
답변
- 네트워크에서 처리량은 무엇을 의미하나요?
- 링크를 통해 전달되는 단위 시간당 데이터양
- 처리량은 어떤 상황에 영향을 받나요?
- 사용자들이 많이 접속할 때마다 커지는 트래픽
- 네트워크 장치 간의 대역폭
- 네트워크 중간에 발생하는 에러
- 장치의 하드웨어 스펙
- 네트워크 병목현상은 무엇인가요?
- 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상, 웹 서비스에서 병목 현상이란 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못했을 때, 웹 사이트로 들어가지 못하는 상황을 의미합니다.
- TCP/IP가 무엇인가요? 각 계층에 대해 설명할 수 있나요?
- 애플리케이션 계층 - 어떤 프로토콜을 사용할지?
- 전송 계층 - 어떤 방식으로 프로토콜을 보낼지?
- 인터넷 계층 - 어떤 사용자(IP)에게 보낼지?
- 링크 계층 - 어떤 장치를 통해 데이터를 보낼지?
- 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합입니다. 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었습니다. 계층은 총 4가지 계층으로 이루어져 있습니다. 애플리케이션 계층, 전송 계층, 인터넷 계층, 링크 계층입니다.
- 전송 계층의 대표적인 방식은 무엇이 있고 어떤 차이가 있나요? (키워드: TCP, UDP)
- TCP/IP의 4계층 중 하나인 전송 계층에는 크게 2가지 방식이 있습니다.
- TCP 계층은 패킷 사이의 순서를 보장하고, 연결지향 프로토콜을 사용해서 연결을 하여 신뢰성을 구축하는 데이터 전송 방식입니다.
- UDP 계층은 패킷 사이의 순서를 보장하지 않고, 수신 여부를 확인하지 않으며 단순히 데이터만 주는 전송 방식입니다.
- 계층 간 데이터 송수신 과정에 대해 설명할 수 있나요?
- 컴퓨터를 통해 다른 컴퓨터로 데이터를 요청할 경우, 데이터를 송수신하기 위한 흐름이 발생합니다. 최상위 계층인 애플리케이션 계층에서부터 필자가 보내는 요청 값들을 캡슐화하여 전달되고, 링크 계층을 통해 해당 서버와 통신을 하고, 다시 최하위 계층인 링크 계층부터 애플리케이션 계층까지 비캡슐화 과정을 거쳐 데이터가 전송됩니다.
- 네트워크에서 PDU에 대해 알고 있나요?
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
'Computer Science' 카테고리의 다른 글
운영체제 (1) 2024.04.25 네트워크 (2) (1) 2024.04.19 기본 리눅스 명령어 15가지 알아두기 (1) 2024.02.26 프로그래밍 패러다임 (1) 2023.03.12