테마 선택

📚 지식 노트

AI·하드웨어·주변기기·게임·컴퓨터 시스템·이론 컴퓨터 과학·수학·개발과 운영·보안·응용 분야에 대해 알아 두면 좋은 내용을 정리한 노트다. 위에서 분야를 고르고 아래에서 노트를 고른다.

네트워크

데이터가 내 컴퓨터를 떠나 지구 반대편 서버에 닿고 돌아오기까지, 그리고 게임에서 핑이 중요한 이유를 정리한다.

목차 (9)
  1. 데이터는 작은 소포(패킷)로 나뉜다
  2. 계층: 일을 나눠 맡는다
  3. 주소: IP, NAT, DNS
  4. TCP와 UDP
  5. 회선 품질을 나타내는 네 가지
  6. 집 안에서 느려지는 곳: 가장 느린 구간이 속도를 정한다
  7. 대칭형과 비대칭형 회선
  8. 주소창에 주소를 넣으면 일어나는 일
  9. 흔한 오해

데이터는 작은 소포(패킷)로 나뉜다

파일이나 영상은 한 덩어리로 가지 않는다. 보통 1,500바이트 안팎의 패킷으로 잘려, 각자 받는 주소를 붙이고 여러 공유기(라우터)를 거쳐 간다. 패킷마다 다른 길로 가기도 하고, 순서가 뒤바뀌거나 사라지기도 한다. 받는 쪽은 이것을 다시 모아 원래 데이터로 맞춘다.

계층: 일을 나눠 맡는다

계층하는 일예
물리비트를 전기·빛·전파로 실어 보낸다랜선, 광케이블, Wi-Fi 전파
링크같은 네트워크 안의 옆 장치로 전달한다이더넷, Wi-Fi, MAC 주소
인터넷네트워크와 네트워크를 건너 목적지까지 길을 찾는다IP 주소, 라우터
전송어느 프로그램에 줄지(포트) 정하고, 필요하면 순서·재전송을 책임진다TCP, UDP
응용프로그램끼리 주고받는 내용의 약속HTTP, DNS, 게임 서버 프로토콜
캡슐화: 데이터에 TCP나 UDP, IP, 이더넷 머리글이 차례로 붙어 패킷이 된다응용데이터 (HTTP·게임 메시지)전송데이터TCP/UDP인터넷데이터TCP/UDPIP링크데이터TCP/UDPIP이더넷보내는 쪽은 위에서 아래로 머리글을 붙이고, 받는 쪽은 아래에서 위로 벗긴다
캡슐화: 데이터에 계층마다 머리글이 붙어 패킷이 되고, 받는 쪽은 바깥부터 벗긴다.

각 계층은 아래 계층이 어떻게 일하는지 몰라도 된다. 그래서 같은 웹 페이지가 유선으로도 Wi-Fi로도 열린다.

교재와 면접에 자주 나오는 OSI 7계층은 ISO가 1984년 ISO 7498로 낸 참조 모형으로, 아래부터 물리·데이터 링크·네트워크·전송·세션·표현·응용으로 나눈다. 실제 인터넷이 따르는 TCP/IP 모형은 RFC 1122가 정리한 링크·인터넷·전송·응용 네 층이고(위 표는 여기에 물리를 따로 뗐다), OSI의 세션·표현·응용을 한 층으로 본다. 그래도 번호는 OSI 것을 그대로 써서 MAC 주소로 넘기는 장비를 "L2 스위치", IP로 길을 찾는 것을 "L3", IP와 포트만 보고 나누는 로드 밸런서를 "L4", HTTP 내용까지 보고 나누는 것을 "L7"이라 부른다. L4·L7 로드 밸런서의 차이는 시스템 설계 › 설계의 부품에 있다.

주소: IP, NAT, DNS

  • IP 주소는 인터넷에서의 집 주소다. IPv4는 약 43억 개뿐이라 모자라고, 훨씬 큰 IPv6로 옮겨 가는 중이다.
  • NAT: 집 안 기기들은 공유기가 나눠 준 사설 주소를 쓰고, 밖으로 나갈 때는 공유기의 공인 주소 하나를 함께 쓴다. 안에서 먼저 말을 건 상대에게만 답이 들어오므로, 밖에서 내 PC로 바로 연결하기 어렵다.
  • DNS는 인터넷의 전화번호부다. example.com 같은 이름을 IP 주소로 바꿔 준다. 사이트가 안 열리는데 IP로는 되면 DNS 문제다.

사설 대역, CIDR, IPv6

  • 사설 주소: RFC 1918은 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 세 대역을 집·회사 안에서만 쓰도록 떼어 두었다. 공유기가 나눠 주는 192.168.x.x가 이것이고, 그래서 서로 다른 집이 같은 주소를 써도 부딪치지 않는다.
  • CIDR 표기: 192.168.0.0/24의 /24는 앞 24비트가 네트워크 번호라는 뜻이다. 남은 8비트로 주소 2⁸ = 256개를 담는다. /16이면 2¹⁶ = 65,536개다. 서브넷을 나누는 계산과 클라우드가 예약하는 주소는 클라우드 노트의 네트워크 기초 절에 있다.
  • IPv6: 주소가 128비트라 16비트씩 여덟 묶음을 16진수로 적는다(2001:db8:0:0:8:800:200c:417a). 0이 이어지는 묶음은 ::로 한 번만 줄일 수 있고, ::1이 자기 자신(루프백), fe80::로 시작하는 주소가 같은 링크 안에서만 쓰는 링크 로컬 주소다(RFC 4291). 기기마다 공인 주소를 받으므로 NAT 대신 방화벽이 막는 역할을 맡는다(보안 › 네트워크 보안).

포트 번호

IP 주소가 건물이라면 포트는 호수다. 0~65535의 16비트 번호로, IANA는 0~1023을 시스템 포트, 1024~49151을 사용자 포트, 49152~65535를 따로 배정하지 않는 동적 포트로 나눈다. 접속하는 쪽은 보통 동적 포트 하나를 임시로 쓰고, 서버는 잘 알려진 번호에서 기다린다.

포트서비스볼 점
22SSH원격 셸과 파일 복사(scp·sftp)
25SMTP메일 서버끼리 주고받는 포트
53DNSUDP와 TCP 모두. TLS로 감싼 DNS(DoT)는 853
80HTTP암호화하지 않은 웹. 요즘은 대개 443으로 넘기는 용도
443HTTPSIANA는 TCP와 UDP 모두에 443을 등록했다. UDP 쪽은 QUIC 위의 HTTP/3이 쓴다
3389원격 데스크톱(RDP)직접 노출하지 말고 VPN 뒤에 둔다(에뮬레이터와 가상 머신의 원격 데스크톱 절)

DNS 레코드

레코드담는 것
A이름 → IPv4 주소
AAAA이름 → IPv6 주소
CNAME이름 → 다른 이름(별칭). CNAME이 있는 이름에는 다른 레코드를 두지 않는다(RFC 1034)
MX그 도메인의 메일을 받을 서버
TXT자유 글자. 인증서 발급·서비스 가입 때 도메인 주인임을 확인하는 값 등을 담는다
NS그 영역(zone)의 답을 가진 권한 서버
PTRIP 주소 → 이름(역방향 조회)

내 기기는 보통 통신사나 공용 리졸버에 묻고, 리졸버가 루트 → .com → 그 도메인의 권한 서버로 차례로 물어 답을 찾아 온다(RFC 1034의 재귀·반복 질의). 답에는 몇 초 동안 기억해도 되는지 적힌 TTL이 붙고, 리졸버와 기기는 그동안 다시 묻지 않는다. DNS 레코드를 바꿨는데 어떤 사람에게만 옛 주소가 보이는 이유다.

이 사이트의 P2P 화상 통화는 서로의 공유기(NAT) 뒤에 있는 두 브라우저를 WebRTC로 직접 잇는다. 서로 먼저 말을 걸게 해 NAT의 구멍을 여는 방식이다. 공동 메모장도 같은 방법으로 서버 없이 브라우저끼리 글을 주고받는다.

이 구멍 뚫기가 되느냐는 NAT가 바깥 주소를 어떻게 붙이느냐에 달렸다. RFC 4787은 옛 이름(full cone, restricted cone, symmetric 등)이 실제 동작을 제대로 나타내지 못한다며 동작으로 나눈다. 안쪽의 같은 주소·포트가 어느 상대에게 보내든 같은 바깥 포트를 쓰면 끝점 독립 매핑이고, 상대 주소(와 포트)마다 바깥 포트를 새로 붙이면 주소 의존·주소와 포트 의존 매핑이다. 흔히 "대칭형 NAT"라 부르는 뒤쪽에서는 상대가 알아낸 내 바깥 포트가 정작 그 상대와의 연결에는 쓰이지 않아 직접 연결이 실패하고, 중계 서버(WebRTC의 TURN)를 거쳐야 한다. 그래서 RFC 4787은 NAT가 끝점 독립 매핑을 쓰라고 요구한다.

TCP와 UDP

TCPUDP
보장빠짐없이, 순서대로 도착한다. 잃어버린 패킷은 다시 보낸다보내기만 한다. 사라져도 모른다
대가하나가 늦으면 뒤의 데이터도 함께 기다린다기다리지 않아 지연이 적다
쓰임웹 페이지, 파일, 메일게임, 음성·화상 통화, 스트리밍(최신 HTTP/3도 UDP 위에서 동작)

게임은 0.1초 전의 캐릭터 위치를 다시 받아 봐야 쓸모가 없다. 그래서 대부분 UDP로 최신 상태를 계속 보내고, 꼭 필요한 정보만 게임이 직접 다시 보낸다.

연결 맺기와 끊기

TCP는 데이터를 보내기 전에 3방향 악수(3-way handshake)로 연결을 맺는다. 클라이언트가 자기 첫 순번(seq)을 담은 SYN을 보내고, 서버가 자기 순번을 담은 SYN과 함께 "x+1번부터 주세요"라는 ACK를 돌려주고, 클라이언트가 서버 순번에 ACK로 답한다. 서로의 시작 번호를 확인해야 이후 바이트마다 붙는 번호로 빠진 것과 뒤바뀐 것을 가려낼 수 있다. 이 한 왕복이 연결마다 붙는 비용이라 먼 서버일수록 첫 응답이 늦다.

끊을 때는 양쪽이 각자 "더 보낼 것이 없다"는 FIN을 보내고 상대가 ACK로 받는다. 한쪽이 먼저 닫아도 다른 쪽은 남은 데이터를 계속 보낼 수 있어(반쯤 닫힘) 보통 네 번이 오간다. 먼저 닫은 쪽은 TIME-WAIT에서 패킷 최대 수명(MSL)의 두 배만큼 기다린다. 늦게 도착한 옛 패킷이 같은 주소·포트의 새 연결에 섞이지 않게 하려는 것으로, RFC 9293은 MSL을 2분으로 둔다. 짧은 연결을 아주 많이 여닫는 서버에서 TIME-WAIT 연결이 수만 개 쌓이는 이유다.

TCP 연결의 일생. 클라이언트가 SYN, 서버가 SYN+ACK, 클라이언트가 ACK를 보내 연결을 맺고, 끊을 때는 양쪽이 FIN을 보내고 상대가 ACK로 받는다. 먼저 끊은 쪽은 TIME-WAIT에서 잠시 기다린다클라이언트서버SYN seq=xSYN+ACK seq=y, ack=x+1ACK ack=y+1FINACKFINACK데이터 주고받기 (흐름 제어·혼잡 제어)SYN-SENTESTABLISHEDFIN-WAIT-1FIN-WAIT-2TIME-WAITLISTENSYN-RECEIVEDESTABLISHEDCLOSE-WAITLAST-ACKCLOSED3방향 악수4번의 종료(2×MSL 대기)왼쪽·오른쪽 글자는 그 순간 각 쪽의 연결 상태다
TCP 연결의 일생(RFC 9293의 상태 이름). 위 세 화살표가 3방향 악수, 아래 네 화살표가 종료다. 먼저 끊은 클라이언트가 TIME-WAIT에 남는다.

흐름 제어와 혼잡 제어

  • 흐름 제어: 받는 쪽이 ACK마다 "앞으로 이만큼 더 받을 수 있다"는 창(window) 크기를 알려, 보내는 쪽이 받는 쪽의 버퍼를 넘치게 하지 않는다. 상대 컴퓨터를 위한 장치다.
  • 혼잡 제어: 중간 길(공유기·통신사 망)이 막히지 않게 보내는 쪽이 스스로 혼잡 창(cwnd)을 조절한다. RFC 5681의 기본형은 작은 창에서 시작해 ACK마다 키워 왕복마다 대략 두 배가 되는 느린 시작, 문턱을 넘으면 왕복마다 한 세그먼트씩만 늘리는 혼잡 회피, 중복 ACK 세 개가 오면 타이머를 기다리지 않고 다시 보내고 창을 절반 남짓으로 줄이는 빠른 재전송·빠른 회복, 타이머가 만료되면 창을 한 세그먼트로 되돌리는 규칙으로 이뤄진다. 손실을 혼잡의 신호로 읽는 셈이라, Wi-Fi처럼 혼잡이 아닌 이유로 패킷이 사라져도 속도가 떨어진다.

회선 품질을 나타내는 네 가지

지표뜻체감
지연 (ping, ms)보내고 답이 돌아오기까지의 시간게임 조작 반응. 서버까지의 물리적 거리가 바닥을 정한다
대역폭 (Mbps)1초에 보낼 수 있는 양다운로드·고화질 스트리밍 속도
지터 (ms)지연이 들쭉날쭉한 정도통화 끊김, 캐릭터가 순간이동
패킷 손실 (%)도착하지 못한 패킷의 비율총을 쐈는데 안 맞음, 화면 깨짐
  • Mbps와 MB/s: 회선 속도는 비트(b), 파일 크기는 바이트(B)로 적는다. 1바이트 = 8비트라 500Mbps는 약 62MB/s다.
  • 유선과 Wi-Fi: Wi-Fi는 벽·거리·다른 전파의 영향으로 지터와 손실이 늘기 쉽다. 경쟁 게임에는 유선이 가장 확실하다.

이 사이트의 네트워크 테스트로 지금 연결 상태를 확인할 수 있다.

집 안에서 느려지는 곳: 가장 느린 구간이 속도를 정한다

인터넷 속도는 요금제 → 모뎀(광 단말) → 공유기 → 케이블 또는 Wi-Fi → PC의 랜카드를 차례로 지나며, 이 중 가장 느린 곳에 맞춰진다. 1Gbps 요금제를 써도 중간에 100Mbps짜리 구간이 하나 있으면 100Mbps밖에 안 나온다.

요금제와 공유기, 랜카드가 1Gbps여도 중간의 랜 케이블이 100Mbps면 전체가 100Mbps가 된다요금제1Gbps공유기1Gbps랜 케이블100Mbps랜카드1Gbps→ 실제 속도는 가장 좁은 곳에 맞춰 100Mbps
병목: 다른 구간이 모두 1Gbps여도 한 구간이 100Mbps면 전체가 100Mbps다.

랜 케이블

등급최대 속도볼 점
Cat5100Mbps오래된 케이블. 1Gbps 요금제의 병목이 된다
Cat5e1Gbps1Gbps까지는 충분하다
Cat61Gbps (짧은 거리는 10Gbps)2.5Gbps 이상을 쓸 계획이면 이 이상을 쓴다
Cat6a10Gbps (100m)가정에서는 이 정도면 충분하다
Cat7·Cat8더 높음주로 데이터센터용이다. 집 인터넷 속도는 올라가지 않는다
  • 연결 속도를 확인한다. Windows의 네트워크 어댑터 상태에서 “속도”가 1Gbps 요금제인데 100Mbps로 나오면, 케이블 등급이 낮거나 선 일부가 끊겼거나 단자가 덜 꽂힌 것이다. 케이블을 바꾸거나 다시 꽂아 본다.
  • 문틈에 끼워 납작해지거나 심하게 꺾인 케이블은 속도가 떨어지거나 끊길 수 있다.

공유기·스위치·랜카드

  • 포트 속도: 1GbE, 2.5GbE, 10GbE가 있다. 2.5Gbps 이상 요금제라면 공유기의 인터넷(WAN) 포트, 연결한 LAN 포트나 스위치, PC 랜카드가 모두 그 속도를 지원해야 한다.
  • 1Gbps 연결의 실측 최대는 약 940Mbps다. 데이터에 붙는 머리글(헤더) 몫이 빠지기 때문이며, 정상이다.
  • 공유기의 처리 능력: 공유기는 모든 패킷의 주소를 바꿔 주는(NAT) 작은 컴퓨터다. 오래되거나 싼 공유기는 포트가 1Gbps여도 실제 처리량이 그보다 낮다. QoS·VPN 같은 기능을 켜면 더 느려지기도 한다.

Wi-Fi

주파수특징
2.4GHz멀리 가고 벽을 잘 통과하지만 느리고, 이웃 공유기·전자레인지·블루투스와 겹쳐 붐빈다
5GHz빠르고 덜 붐빈다. 벽을 지날수록 급히 약해진다
6GHz (Wi-Fi 6E·7)가장 빠르고 한산하지만 도달 거리가 가장 짧다. 공유기와 기기 모두 지원해야 한다
  • 공유기 상자의 “AX3000”, “BE9300” 같은 숫자는 모든 주파수와 안테나를 더한 이론 최대치다. 기기 하나가 실제로 받는 속도는 그 일부다.
  • 속도는 공유기와 기기 중 낮은 쪽 Wi-Fi 표준에 맞춰진다.
  • 집이 넓거나 벽이 많으면 공유기 위치를 집 가운데·높은 곳으로 옮기거나, 메시 Wi-Fi나 유선 중계기를 쓴다.

집 안 다른 기기와 나눠 쓰기 (버퍼블로트)

회선 대역폭은 집 안 모든 기기가 나눠 쓴다. 누군가 큰 파일을 올리거나 클라우드 백업이 돌아 업로드가 가득 차면 공유기에 패킷이 줄을 서서 다른 기기의 핑이 수백 ms로 치솟는다. 이를 버퍼블로트라 한다. 공유기의 QoS·SQM 기능으로 대역폭을 나눠 주거나, 큰 업로드를 게임 시간과 겹치지 않게 하면 줄일 수 있다.

대칭형과 비대칭형 회선

방식뜻예
비대칭형다운로드가 업로드보다 훨씬 빠르다(예: 다운 500Mbps / 업 50Mbps)케이블(동축)·DSL 회선, 일부 요금제. 보는 용도 위주의 사용에 맞춰 설계되었다
대칭형업로드와 다운로드가 같다(예: 1Gbps / 1Gbps)광(FTTH) 회선에 많다
  • 업로드가 중요한 일: 게임 방송·라이브 스트리밍, 화상 회의, 클라우드 백업·사진 동기화, 게임 서버 호스팅, 큰 파일 보내기. 비대칭 회선에서는 업로드가 먼저 가득 차 위의 버퍼블로트도 생기기 쉽다.
  • 요금제를 고를 때는 다운로드 숫자만 보지 말고 업로드 속도와 최저 보장 속도(“최대” 속도와 다르다)를 함께 확인한다.
  • 속도 측정 사이트에서 업로드도 함께 재 보면 지금 회선이 어느 쪽인지 알 수 있다.

주소창에 주소를 넣으면 일어나는 일

  1. DNS로 이름을 IP 주소로 바꾼다.
  2. 서버와 연결을 맺고, TLS로 암호화 열쇠를 정한다. 주소 앞의 https와 자물쇠 표시가 이것이다.
  3. HTTP로 페이지를 요청하고 HTML을 받는다.
  4. HTML을 읽어 필요한 CSS·JS·이미지를 다시 요청한다.
  5. 내용으로 문서 구조(DOM)를 만들고, 스타일을 계산해 배치(레이아웃)하고, 픽셀로 칠한다.
  6. JS가 실행되며 화면을 바꾸면 필요한 부분만 다시 배치하고 칠한다.

2단계의 "연결"이 위 TCP 절의 3방향 악수다(HTTP/3은 UDP 위의 QUIC이라 연결과 암호화를 함께 맺는다). HTTP/1.1·2·3이 같은 자원을 몇 번의 왕복으로 받는지는 웹 개발 노트의 HTTP/2와 HTTP/3 절, 정적 파일을 사용자 가까운 서버에서 내주는 CDN은 시스템 설계 › 규모 확장의 CDN 절에 있다.

흔한 오해

  • “인터넷 속도가 빠르면 핑도 낮다” — 대역폭과 지연은 다르다. 먼 서버는 아무리 빠른 회선이어도 핑이 높다.
  • “HTTPS여도 비밀번호는 브라우저에서 따로 암호화해 보내야 한다” — 전송 구간은 TLS가 이미 암호화한다. 브라우저 해시는 그 해시가 새 비밀번호가 될 뿐이다(보안 › 인증의 설명).
  • “HTTPS 사이트는 안전한 사이트다” — 오가는 내용이 암호화된다는 뜻이지, 사이트 자체가 믿을 만하다는 뜻은 아니다.
  • “500Mbps면 500MB 파일이 1초” — 비트와 바이트가 달라 약 8초가 걸린다.
  • “Cat8 케이블로 바꾸면 인터넷이 빨라진다” — 요금제·공유기·랜카드가 그대로면 Cat5e·Cat6과 차이가 없다.
  • “Wi-Fi 표기 속도가 내 속도” — 모든 안테나·주파수를 더한 이론값이다. 실제로는 훨씬 낮다.
  • “UDP는 TCP보다 늘 빠르다” — 회선 대역폭은 같다. UDP가 아끼는 것은 연결을 맺는 왕복과 잃어버린 패킷을 기다리는 시간이지, 같은 회선에 비트를 더 빨리 싣는 것이 아니다.
  • “DNS를 바꾸면 바로 모두에게 반영된다” — 리졸버가 TTL만큼 옛 답을 기억한다. 옮기기 전에 TTL을 미리 짧게 줄여 둔다.