기기가 인터넷을 통해 어떻게 연결되어 있는지 궁금한 적이 있나요? 아니면 기업이 지역 간 정보 공유를 원활하게 관리하는 방법은 무엇일까요? 이 모든 것은 비즈니스 전략의 일환으로 컴퓨터 네트워크를 사용하여 달성됩니다. 이를 통해 우리는 인터넷을 통해 네트워크에 있는 다양한 애플리케이션과 장치 간에 통신을 설정하고, 협업하고, 리소스를 공유할 수 있습니다. 이제 네트워킹과 소프트웨어 애플리케이션 및 기타 다양한 기술의 통합 덕분에 단 한 번의 클릭으로 친구 또는 누구와도 연락하거나 정보를 공유할 수 있습니다. Python에서 네트워킹은 기기와 외부 리소스 간의 상호작용을 활성화하는 기본 개념입니다. Python에는 일반 네트워킹을 위한 '소켓' 및 HTTP 통신을 위한 '요청'과 같은 네트워킹 기능을 지원하는 많은 내장 모듈이 포함되어 있습니다.
따라서 이번 글에서는 네트워킹의 기본 개념부터 고급 개념까지 파이썬으로 실제 사례를 들어 설명하겠습니다.
네트워킹이란 유선 케이블이나 무선 네트워크를 통해 여러 컴퓨터와 장치를 연결하여 인터넷을 통해 데이터를 교환하고 리소스를 공유하는 것을 의미합니다. 여러 장치 간의 통신이 가능합니다. 우리가 알고 있듯이 분산 시스템은 많은 수의 클라이언트, 하드웨어 장치 및 프로세스가 연결되어 리소스를 공유하고 통신하는 시스템입니다. 따라서 네트워킹과 분산 시스템은 상당히 상호 연결되어 있습니다. 저장, 리소스 공유, 전자 통신을 용이하게 하는 인프라를 제공하여 시스템의 효율성과 생산성을 향상시킵니다.
일상 생활에서 사용하는 주요 네트워킹 개념은 다음과 같습니다.
IP 주소는 네트워크에서 귀하의 장치를 고유하게 식별합니다. 인터넷에 연결되는 장치가 있는 경우 IP 주소가 있어야 합니다. IP는 인터넷 프로토콜을 의미합니다. 네트워크 내 컴퓨터나 장치의 고유 번호 또는 식별자입니다. 모든 장치에는 네트워크 내의 다른 장치와 구별되는 고유 번호가 있습니다. 예:
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
참고:
IP 주소는 인터넷 프로토콜을 사용하여 네트워크를 통해 통신하는 각 컴퓨터를 식별하는 마침표로 구분된 고유한 숫자 문자열입니다.
포트는 네트워킹에서 장치의 특정 서비스나 프로세스를 지정하는 데 사용되는 숫자 식별자입니다. 네트워크에서 장치의 위치를 식별하는 IP 주소와 달리 포트를 사용하면 여러 서비스가 동일한 장치에서 동시에 작동할 수 있습니다. 이는 데이터가 올바른 애플리케이션이나 프로세스로 전달되도록 보장합니다. 이러한 포트의 범위는 0 ~ 65535이며 특정 프로토콜용으로 특정 규모가 예약되어 있습니다. 예:
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
네트워크 프로토콜은 네트워크 장치 간의 통신을 위한 일련의 절차와 관행입니다. 이는 데이터의 형식, 전송 및 수신 방법을 정의합니다. 예를 들면 HTTP, FTP, SMTP, DNS 등이 있습니다. 프로토콜은 애플리케이션 계층(HTTP), 전송 계층(TCP), 네트워크 계층(IP) 등 OSI 모델의 다양한 계층에서 작동할 수 있습니다.
소켓은 여러 장치 간에 데이터를 보내거나 받기 위한 네트워크 종단점입니다. IP 주소와 포트 번호의 페어링이 필요합니다. 소켓은 두 가지 주요 유형이 있습니다. 연결 지향적인 TCP 연결용 SOCK_STREAM과 연결 없는 UDP 연결용 SOCK_DGRAM입니다. 소켓을 사용하면 웹, 이메일 서버 등 다양한 네트워크 서비스를 구현할 수 있습니다.
장치나 컴퓨터가 서로 상호 작용하고 통신할 수 있도록 인터넷을 통해 연결하는 방법을 알려주는 특정 모델이 정의되어 있습니다. 네트워킹을 정의하는 데는 두 가지 기본 모델이 있습니다. OSI 모델 또는 TCP/IP 스택. 각각에 대한 개요를 간략하게 살펴보겠습니다.
TCP/IP 스택은 인터넷에서 네트워크 장치를 상호 연결하는 데 사용되는 통신 프로토콜 모음으로, 안정적인 데이터 전송과 통신을 보장합니다. 이는 컴퓨터가 상호 작용하는 방법과 해당 시스템을 설계하는 방법에 대한 일련의 절차입니다. 기능을 이해하기 위해 5개의 레이어로 나누어집니다. 각 계층에는 해당 작업이 있으며 애플리케이션, 전송, 네트워크 액세스, 데이터 링크 및 물리적 계층이 있습니다. TCP/IP 스택은 네트워킹 통신에 대한 이론적 이해를 제공하는 OSI 모델과 달리 실제 세계에서 네트워킹의 실용적인 구현을 제공합니다. 또한 전송 계층은 안정적인 데이터 전송을 위한 기능을 제공하고 네트워크 액세스는 올바른 IP 주소와 데이터 패킷 라우팅 등을 보장합니다.
TCP/IP와 마찬가지로 OSI 모델도 여러 장치에 걸쳐 네트워크를 설계하는 데 사용됩니다. 이는 7개의 서로 다른 계층에서 네트워크 프로토콜을 이해하고 구현하기 위한 일련의 절차로 구성된 개념적 프레임워크입니다. 추가 레이어를 포함하여 TCP/IP와 동일한 레이어를 공유합니다. 여기에는 애플리케이션, 프리젠테이션, 세션, 전송, 네트워크 액세스, 데이터 링크 및 물리적 계층이 포함됩니다. 특히, OSI와 TCP/IP의 주요 차이점은 TCP/IP의 애플리케이션 계층에 두 개의 추가 계층이 형성되어 있다는 것입니다.
네트워킹에는 두 개 이상의 장치를 연결하여 해당 장치 내에서 통신이 가능하도록 하는 것이 포함됩니다. Python에서 소켓 프로그래밍은 기본적이고 핵심적인 네트워크 생성 메커니즘입니다. 소켓 프로그래밍을 위해서는 소켓 모듈을 가져와야 합니다. 개발자는 소켓 모듈을 사용하여 TCP 및 UDP 통신을 위한 소켓을 생성, 구성 및 관리할 수 있습니다. 이 모듈에는 소켓을 생성하고 서로 연결하는 데 필요한 많은 내장 메서드가 있습니다. 사용되는 몇 가지 중요한 메소드는 소켓을 생성하는 데 사용되는 소켓.소켓입니다. 이 소켓은 클라이언트측과 서버측 모두에서 사용됩니다. 또한, 통신을 수락하기 위해 소켓.accept 메소드를 사용합니다.
참고
TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약자로 안정적인 데이터 전송을 보장하는 연결 지향 프로토콜입니다. UDP는 안정성보다 속도를 우선시하는 비연결 프로토콜인 사용자 데이터그램 프로토콜입니다.
소켓은 데이터를 보내고 받는 데 사용되는 네트워크 끝점입니다. 기본적으로 단일 네트워크에는 각 통신 장치마다 하나씩 두 개의 소켓이 있습니다. 이 소켓은 IP 주소와 포트 번호를 결합합니다. 또한 단일 장치는 사용된 포트 번호에 따라 N개의 소켓을 가질 수 있습니다. 다양한 유형의 프로토콜에 다양한 포트를 사용할 수 있습니다. 예를 들어 HTTP는 포트 80을 사용합니다. 이 엔드포인트 메커니즘을 통해 개발자는 다양한 네트워킹 시나리오에서 정확하고 안정적인 데이터 교환을 보장할 수 있습니다.
이제 Python 프로그래밍의 기초인 소켓 프로그래밍이 무엇인지 이해했으므로 코드 편집기로 이동하여 어떻게 생성할 수 있는지 살펴보겠습니다. 연결을 설정하려면 클라이언트측과 서버측에 대해 서로 다른 두 개의 파일을 생성해야 합니다.
server.py
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
client.py
HTTP uses port 80 HTTPS uses port 443
전송 제어 프로토콜이라고도 알려진 TCP는 TCP/IP 모델 내의 전송 계층 프로토콜입니다. 이는 인터넷을 통해 데이터를 전송하는 방법을 결정하는 일련의 프로토콜과 절차로 구성됩니다. 일반적으로 데이터가 파일로 전송되면 개별 패킷으로 분류됩니다. 패킷이 각 패킷마다 고유한 번호를 가지고 목적지에 도착할 때. 우리는 그것으로 그것들을 조립할 수 있습니다. 또한 일부 패킷이 누락된 경우 TCP는 해당 패킷이 재전송되는지 확인합니다. 이것이 바로 우리가 TCP를 신뢰할 수 있는 통신 프로토콜이라고 부르는 이유는 TCP가 핸드셰이크 프로세스를 통해 통신을 설정하고, 수신된 데이터를 확인하고, 패킷의 올바른 순서를 유지하고 데이터 무결성과 전달을 보장함으로써 손실된 패킷을 재전송하기 때문입니다.
서버는 클라이언트의 요청을 기다리는 소프트웨어이고, 클라이언트는 서버에 리소스를 요청합니다. 소켓 프로그래밍은 대부분 클라이언트-서버 아키텍처를 위해 구현됩니다. 여기에서는 클라이언트가 메시지를 보내고 서버가 해당 메시지에 응답하고 TCP가 있는 소켓 모듈을 사용하여 해당 요청에 적절한 응답을 제공하는 클라이언트와 서버를 만드는 예를 설명합니다. 클라이언트와 서버 모델을 모두 설계해 보겠습니다.
server.py
IPv4: 32-bit address: 192.168.1.1 IPv6: 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
client.py
HTTP uses port 80 HTTPS uses port 443
TCP 소켓을 사용하여 Python으로 간단한 채팅 애플리케이션을 만들어 보겠습니다. 여기서 서버는 들어오는 명령을 듣고 클라이언트는 해당 서버에 연결하여 메시지를 보내고 받습니다. Python 내장 모듈, 즉 소켓을 사용하여 채팅방을 구축하겠습니다. 따라서 클라이언트와 서버처럼 각 측면에 대해 별도로 코드를 작성해야 합니다.
server.py
import socket #Import library #Create a socket object and then define two arguments first one specifies the IP address #and second indicate the use of a TCP socket. soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Prepare to receive connections by binding it to the IP address and port soc.bind((socket.gethostname(), 1042)) #Listen to the connection soc.listen(5) while True: #Set client socket and address and make a connection clt, addr = soc.accept() print(f"Connection Established to address {addr}") msg = "Message Received and the message is ->" clt.send(bytes(msg + "Socket Programming in Python", "utf-8"))
client.py
import socket #Importing the module #Create a socket object and then define two arguments first one specifies the IP address #and second for indicating the use of a TCP socket. soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Set the connection with the port number and hostname soc.connect((socket.gethostname(), 1042)) #Set the bytes of the message how much you want to receive msg = soc.recv(100) print(msg.decode("utf-8"))
네트워킹은 컴퓨터 과학 및 프로그래밍에서 중요한 개념입니다. 사무실에서 작업하든 팀과 파일을 공유하든 대부분의 인간 문제를 해결합니다. 또는 다른 나라의 친척에게 연락하세요. 요약하면 Python을 사용하여 네트워킹 기반을 확실하게 도입하는 데 중점을 두었습니다. 네트워크 제어 및 모델, 클라이언트 및 서버 아키텍처의 필수 주제와 소켓 라이브러리를 활용한 실제 예제를 배웠습니다. 이 라이브러리는 분산 시스템을 위한 안전하고 안정적인 네트워크 구축을 보장합니다. 네트워크 프로그래밍의 숙련도를 더욱 향상하려면 이러한 기술을 계속 실험하고 구축하십시오. 이 가이드가 도움이 되기를 바랍니다. 읽어주셔서 감사합니다. 즐거운 코딩하세요!
Python의 네트워킹
소켓 라이브러리
위 내용은 고급 Python 개념 - Python을 사용한 네트워킹의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!