기술(Tech, IT)/네트워크 (Networking) 14

[Networking] GetAdaptersAddresses function (iphlpapi.h)

GetAdaptersAddresses 함수는 로컬 컴퓨터의 네트워크 어댑터에 대한 정보를 검색하는 데 사용되는 Windows API 함수다. 이 함수는 IPv4 및 IPv6 주소와 기타 어댑터 관련 정보를 포함한 포괄적인 세부 정보를 제공한다. 이 함수는 IPv6 및 추가 어댑터 정보를 지원해 GetAdaptersInfo에 비해 더 현대적이고 다양한 기능을 제공하기에 이전 함수인 GetAdaptersInfo에 비해 선호된다. 이 함수는 반환되는 대량의 데이터를 처리하기 위해 적절한 버퍼 관리가 필요하므로 최신 네트워크 애플리케이션에 더 유연하고 미래 지향적이다.ULONG GetAdaptersAddresses( ULONG Family, ULONG ..

[Networking] GetIpAddrTable function (iphlpapi.h)

GetIpAddrTable 함수는 로컬 컴퓨터의 IP 주소 테이블을 검색하는 Windows API 함수다. 이 테이블에는 시스템의 각 네트워크 인터페이스와 연결된 IP 주소 목록이 포함되어 있다. 이 함수에는 테이블을 수신할 버퍼에 대한 포인터, 버퍼 크기를 지정하는 변수에 대한 포인터, 테이블 정렬 여부를 나타내는 boolean 값의 세가지 매개변수가 필요하다. 이 함수는 성공 또는 실패를 나타내는 상태 코드를 반환하며, 버퍼는 IP 주소 테이블을 저장할 수 있는 올바른 크기로 할당돼야 한다. DWORD GetIpAddrTable( _Out_writes_bytes_opt_(*pdwSize) PMIB_IPADDRTABLE pIpAddrTable, _Inout_ PULONG pdwSize, ..

[Networking] Loopback Address, Loopback Interface

Loopback Address와 Loopback Interface는 컴퓨터 네트워킹의 기본 개념으로, 주로 단일 컴퓨터 내에서 테스트 및 통신에 사용된다. Loopback Address와 Loopback Interface는 주로 내부 테스트, 개발 및 안전한 로컬 전용 통신을 위해 네트워킹에서 중요한 역할을 한다. 네트워크 애플리케이션이 외부 네트워크 상호 작용 없이 단일 시스템에서 올바르게 작동할 수 있도록 도와준다. Loopback Address정의: Loopback Address는 컴퓨터가 스스로 메시지를 보내는 데 사용하도록 설계된 특수 IP 주소다. 주로 테스트 및 네트워크 소프트웨어 개발에 사용된다.IPv4: IPv4에서 예약된 Loopback Address는 127.0.0.1이다. 전체 12..

[Networking] SOM Ethernet (System-on-Module Ethernet)

SOM Ethernet은 이더넷 지원을 포함하는 System-on-Module(SOM)과 관련된 기능을 의미한다. 또는 상황에 따라 임베디드 시스템 내 네트워크 통신에서의 역할을 강조하는 System-on-Module의 네트워킹 기능을 의미할 수도 있다. System-on-Module (SOM): SOM은 소형 모둘에 시스템 프로세서, 메모리, 때로는 기타 주변 장치가 통합된 소형 통합 하드웨어 구성 요소다. SOM은 캐리어(carrier) 또는 베이스보드(baseboard)에 꽂을 수 있도록 설계되어 추가적인 주변 장치 인터페이스 및 연결 옵션을 제공할 수 있다. 이러한 설계는 하드웨어 기능이 SOM에 캡슐화되어 최종 제품의 설계 및 개발을 간소화하므로 임베디드 시스템을 쉽게 사용자가 정의하고 확장할 ..

[Networking] Socket Programming (소켓 프로그래밍) - 분산 시스템 구현

Distributed System (분산 시스템) 은 소켓 프로그래밍을 사용해 서로 통신하는 여러 노드로 구성된 네트워크를 만들 수 있다. 중앙 서버로 데이터를 전송하는 여러 클라이언트가 있고 서버가 이 데이터를 처리해 응답을 보내는 간단한 예를 살펴보자. Server Code: 이 서버는 여러 연결을 동시에 관리하기 위해 threading을 사용해 여러 클라이언트를 처리한다. 각 클라이언트 연결은 별도의 thread에서 처리된다. '1024'는 한 번에 수신 가능한 데이터의 최대 크기(buffer size)를 의미하고 단위는 Byte다. import socketimport threadingdef client_handler(connection, address): print(f"Connected to..

[Networking] Host vs Port

네트워킹 및 소켓 프로그래밍의 맥락에서 "Host"라는 용어는 일반적으로 네트워크 주소를 통해 액세스할 수 있는 네트워크 상의 모든 컴퓨터 또는 장치를 의미한다. 다음은 "Host"와 "Port"의 개념에 대해 좀 더 자세한 설명이다. 소켓 프로그래밍에서 Host와 Port를 지정하면 네트워크 endpoint를 정의하는 것이다. Port 번호는 Host와 관련이 있으며, 해당 Host의 어떤 프로그램이나 서비스가 특정 Port로 들어오는 네트워크 데이터를 처리해야 하는지를 지정한다. Host: Host는 네트워크에서 IP 주소로 식별할 수 있으며, 이 주소는 192.168.1.1과 같은 IPv4 주소이거나 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 IPv6 주소일 수 ..

[Networking] Socket Programming (소켓 프로그래밍) - 파이썬 구현

가독성과 포괄적인 표준 라이브러리로 인해 널리 사용되는 Python을 사용해 서버와 클라이언트 모두에 대한 Socket Programming의 간단한 예제다. 다음은 TCP 서버와 클라이언트를 설정하는 방법에 대한 기본 예제다. 매우 기본적인 예시이며 실제 애플리케이션에서는 오류, 여러 클라이언트 및 보다 정교한 데이터 처리를 해야한다.  TCP Server Code: 이 서버는 지정된 호스트와 포트에서 수신 대기하고, 연결을 수락하고, 클라이언트로부터 메시지를 수신한 후 응답을 다시 보냅니다.import socketdef run_server(host='127.0.0.1', port=65432): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as..

[Networking] Socket programming (소켓 프로그래밍) - 2

Socket programming은 인터넷 네트워킹의 맥락에서나 Linux와 같은 운영 체제 내에서 다양한 목적으로 다용도로 사용된다. 인터넷 네트워킹: Socket programming은 인터넷을 통한 통신을 가능하게 하는 데 광범위하게 사용된다. 이를 통해 서로 다른 컴퓨터의 서로 다른 애플리케이션이 네트워크를 통해 통신할 수 있다. 예를 들어, 웹사이트에 접속하면 브라우저는 Socket을 사용하여 웹 서버와 통신한다.운영 체제: Linux와 같은 운영 체제 내에서 Socket은 인터넷 통신뿐만 아니라 프로세스 간 통신(IPC)에도 사용된다. Socket은 프로세스가 같은 컴퓨터에 있더라도 네트워크 프로토콜 스택을 사용하여 서로 통신할 수 있는 방법을 제공한다. 이는 Linux 환경 내 시스템 프로그..

[Networking] Socket Programming (소켓 프로그래밍) - 1

Socket Programming은 일반적으로 서로 다른 시스템에서 실행되지만 같은 시스템에 있을 수도 있는 서로 다른 프로세스 간의 통신을 가능하게 하는 방법이다. 본질적으로는 통신 채널의 엔드포인트인 'Socket'을 만드는 것이다. Socket Programming은 네트워크를 통해 통신하는 모든 애플리케이션의 기본이므로 네트워크 소프트웨어 개발에 매우 중요하다. Socket의 정의: Socket은 네트워크에서 실행 중인 두 프로그램 간의 양방향 통신 링크의 endpoint다. Socket읜 포트 번호에 바인딩 되어 TCP 계층에서 데이터가 전송될 애플리케이션을 식별할 수 있다.작동 방식: Socket Programming은 일반적으로 TCP/IP 프로토콜 스택을 사용한다. 데이터는 네트워크 프로토..

[Networking] TCP (Transmission Control Protocol)

TCP는 네트워크, 특히 인터넷에서 사용되는 기본 통신 프로토콜로, 애플리케이션 간에 데이터 스트림을 안정적이고 순서대로 오류를 확인하며 전달할 수 있도록 한다. 이는 인터넷 프로토콜 제품군의 핵심 프로토콜 중 하나이며, 일반적으로 TCP/IP라고도 한다. TCP는 파일 전송, 이메일, 웹 브라우징과 같이 데이터가 정확하고 순서대로 완전해야 하는 애플리케이션에 매우 중요하다. 하지만 이러한 기능에 필요한 오버헤드로 인해 지연 시간이 발생하고 처리량이 감소할 수 있어, 스트리밍이나 게임과 같은 실시간 애플리케이션에는 신뢰성 기능이 부족하더라도 UDP와 같은 프로토콜이 선호될 수 있다. Connection-Oriented: TCP는 연결 지향 프로토콜로, 양쪽 끝에 있는 애플리케이션 프로그램이 메시지 교환을..