[Data Communication] Layer Packet Signal
브라우저를 통해 https://www.naver.com/ 으로 접속할 때 무슨 일이 발생할까?

먼저 운영체제가 로컬 DNS 캐시를 확인하고 히트된 경우 해당 IP주소를 바로 사용한다.
히트되지 않은 경우 DNS 서버에 질의를 보내는데, 이 때 무선 랜카드와 무선 공유기를 사용한다. (유선의 경우 이더넷 케이블)
무선 공유기(AP)는 와이파이 신호를 받아 이더넷 패킷으로 변환하고 인터넷 라우터로 전달한다.
공유기는 NAT로 내부 IP를 공인 IP로 변환해준다.
집 인터넷 라우터는 공유기로부터 받은 요청을 ISP 네트워크로 전달한다.
요청 데이터는 광케이블을 통해 ISP 네트워크로 전송되고, ISP 네트워크에서 라우터가 패킷을 분석하고 인터넷으로 보내는데, 이 때 스위치는 패킷을 빠르게 전송하기 위해 적절한 장비로 전달한다.
ISP의 DNS 서버는 해당 도메인 네임에 해당하는 실제 IP 주소를 반환한다.
통신사의 네트워크를 거친 데이터는 네이버의 데이터센터로 이동하는데, 이 때 여러 라우터와 스위치를 거친다.
네이버 서버에서 처리된 데이터는 다시 패킷으로 쪼개지고 인터넷을 통해 사용자의 컴퓨터로 전송된다.
패킷의 기본 크기는 이더넷 기준 1500바이트이고, 큰 데이터를 보낼 때는 데이터를 여러 패킷으로 나눠서 전송한다.
유선 네트워크는 바다 밑에 깔린 해저 광케이블으로 이더넷을 구성하고, 무선 네트워크는 주파수 등 전자기파를 이용해 데이터를 전송한다.
2.4GHz 대역은 느리지만 멀리까지 전송할 수 있고, 5GHz 대역은 빠르지만 장애물에 약하다.
Physical - 아날로그 데이터를 0과1의 전기 신호로 변환하는 계층으로, 데이터를 실제로 전송하는 하드웨어적인 부분을 담당한다. (Bit)
Data Link - 같은 네트워크 안에서 장치끼리 누가 누구에게 데이터를 전송하는지 결정하는 계층. (Ethernet Address. 네트워크 카드의 고유 주소)
Network - IP주소를 활용해 데이터를 목적지까지 라우팅하는 계층. (IP Address. IPv4 기준 최대 255)
Transport - 데이터를 애플리케이션에 맞춰서 분할하고 조립하는 계층으로, 데이터를 나눠서 보낼지 한 번에 보낼지를 결정한다. (Port)
Session - 클라이언트와 서버 간의 연결을 관리하는 계층으로 연결을 유지할지 끊을지를 결정한다. (Session Key)
Presentation - 데이터를 인코딩, 압축, 암호화, 복호화하는 계층으로 서버에서 보낸 데이터를 브라우저가 이해할 수 있도록 변환한다. (MIME)
Application - 사용자가 직접 사용하는 프로그램과 관련된 계층으로 웹 브라우저, 이메일 등이 해당된다. (URL)
Transport 계층까지는 운영체제에서 지원하고, 나머지 부분은 애플리케이션이 직접 처리한다.
즉, TDPDump, Wireshark 모두 kernel 함수를 가져다가 사용한다.
실제 신호는 아날로그 신호지만, 패킷은 0/1로 구성되는 디지털 비트로 구성된다.
데이터의 전송은 물리계층에서 이루어지고, 아날로그 신호는 사인 함수 형태를 가진다.

각각 진폭, 주파수, 위상을 나타내고 물리계층에서는 사인함수를 조작해 신호를 비트로 표현한다.
유선 신호는 광케이블, 전기적신호, 빛 등으로 전달되고 무선 신호는 가청/비가청 주파수로 표현된다.
소리와 모스 부호를 활용하면 아날로그 신호를 쉽게 테스트 해 볼 수 있다.
english={'A':'.-','B':'-...','C':'-.-.', 'D':'-..','E':'.','F':'..-.', 'G':'--.','H':'....','I':'..', 'J':'.---','K':'-.-','L':'.-..', 'M':'--','N':'-.','O':'---', 'P':'.--.','Q':'--.-','R':'.-.', 'S':'...','T':'-','U':'..-', 'V':'...-','W':'.--','X':'-..-', 'Y':'-.--','Z':'--..'} number={'1':'.----','2':'..---','3':'...--', '4':'....-','5':'.....','6':'-....', '7':'--...','8':'---..','9':'----.', '0':'-----'} def file2morse(filename): with wave.open(filename, 'rb') as w: audio = [] framerate = w.getframerate() frames = w.getnframes() for i in range(frames): frame = w.readframes(1) audio.append(struct.unpack('<i', frame)[0]) unit = int(0.1 * 48000) morse = '' signal_active = False silence_seq = 0 active_seq = 0 for i in range(0, len(audio), unit): segment = audio[i:i + unit] avg_ampl = sum(map(abs, segment)) / len(segment) if avg_ampl > 10000: if not signal_active: if 3 * unit <= silence_seq < 7 * unit: morse += " " elif silence_seq >= 7 * unit: morse += " " silence_seq = 0 active_seq += unit signal_active = True else: if signal_active: if active_seq < 2 * unit: morse += "." else: morse += "-" active_seq = 0 silence_seq += unit signal_active = False return morse def morse2text(morse): words = morse.split(" ") decoded_text = [] for word in words: letters = word.split(" ") decoded_word = "" for letter in letters: for key, value in english.items(): if letter == value: decoded_word += key break else: for key, value in number.items(): if letter == value: decoded_word += key break decoded_text.append(decoded_word) return " ".join(decoded_text)
wav파일은 아날로그 소리를 디지털로 샘플링한 파일이다.
물리계층에서는 신호를 비트로 변환하는데, wav파일을 모스부호로 변환하는 작업도 신호를 문자로 변환하는 과정이니 해당 코드는 물리계층이 하는 작업과 유사하다.
실제로는 소리 말고도 전기 신호, 빛, 자기장 등 다양한 방식으로 데이터를 표현하고 전송한다.
'Computer Science > Computer Network' 카테고리의 다른 글
[Data Communication] 물리 계층에서의 데이터 전송 (0) | 2025.04.02 |
---|---|
[Nginx] nginx.conf (1) | 2023.12.28 |
[Nginx] Timeout (0) | 2023.12.24 |
[Network] 백엔드 아키텍처 (0) | 2023.12.21 |
[Nginx] 내부 구조와 리버스 프록시 (1) | 2023.12.21 |
댓글
이 글 공유하기
다른 글
-
[Data Communication] 물리 계층에서의 데이터 전송
[Data Communication] 물리 계층에서의 데이터 전송
2025.04.02 -
[Nginx] nginx.conf
[Nginx] nginx.conf
2023.12.28 -
[Nginx] Timeout
[Nginx] Timeout
2023.12.24 -
[Network] 백엔드 아키텍처
[Network] 백엔드 아키텍처
2023.12.21
댓글을 사용할 수 없습니다.