이 프로세스의 시점에서 NAT 및 DNS 서버 기능을 시연했습니다. 또한 MAC 원본 및 대상 주소가 노드 간에 변경되는 방법과 IP 원본 및 대상 주소가 원본에서 대상으로 동일하게 유지되는 방법(네트워크 경계를 제외한)도 보여 주어도 마찬가지입니다. 이 웹 페이지를 다운로드하는 나머지 TCP/IP 통신은 이 시점에서 이해해야 합니다. 클라이언트와의 통신이 완료되면 close()를 사용하여 연결을 정리해야 합니다. 이 예제에서는 try:finally 블록을 사용하여 오류가 발생한 경우에도 close()가 항상 호출되도록 합니다. 이 패킷의 대상 IP 주소를 결정하는 Link 계층은 로컬 네트워크에 없습니다. 따라서 이 예제에서 라우터인 기본 게이트웨이로 패킷을 보내야 합니다. TCP/IP 프로토콜은 네트워크의 각 컴퓨터 또는 장치에 고유한 „IP 주소”(인터넷 프로토콜 주소)를 가지도록 설계되었으며, 각 IP 주소는 다른 컴퓨터로 데이터를 보내고 받기 위해 최대 65535개의 서로 다른 „포트”를 열고 통신할 수 있습니다. 네트워크 장치. IP 주소는 네트워크의 컴퓨터 또는 장치를 고유하게 식별하고 „포트 번호”는 한 컴퓨터 또는 장치와 다른 컴퓨터(예: 두 IP 주소 간) 간의 특정 연결을 식별합니다. TCP/IP „포트”는 포트 번호를 사용하여 두 장치 간의 고유한 연결을 식별하는 개인 양방향 통신 회선으로 생각할 수 있습니다. 이 개념은 물리적 연결이 아닌 TCP/IP 프로토콜이 „가상 IP 포트”를 생성하고 네트워크 하드웨어 및 소프트웨어가 데이터를 내보내고 라우팅하는 것을 제외하고는 PC의 다른 유형의 포트(직렬, 병렬 등)와 매우 유사합니다. 각 가상 IP 포트의 이 예제에서 기억해야 할 두 가지 중요한 사항이 있습니다.
첫째, 모든 게이트웨이(즉, 라우터)에서 패킷은 물리적 계층과 데이터 링크 계층을 통해 네트워크 계층까지 이동하지만 더 높지는 않습니다. 라우팅 소프트웨어는 패킷을 보낼 다음 컴퓨터를 선택하고 데이터 링크 및 물리적 계층을 통해 패킷을 다시 전달하는 네트워크 계층에서 작동합니다. 이러한 세 계층은 모든 컴퓨터와 장치에 관여하지만 전송 및 응용 프로그램 계층은 송신 컴퓨터(응용 프로그램 계층 패킷 및 TCP 세그먼트를 생성하기 위해)와 수신 컴퓨터(이해) TCP 세그먼트 및 응용 프로그램 계층 패킷을 처리합니다. TCP/IP 네트워크 자체 내에서 메시지는 계층 3에만 도달합니다. 아래 섹션에서는 네트워크를 통해 메시지를 보내는 방법을 설명합니다. 단순화를 위해 처음에는 TCP 연결을 설정하고 닫을 필요가 없습니다. 기본 개념을 이해하면 예제를 완료하기 위해 이 개념을 추가합니다. TCP/IP 또는 전송 제어 프로토콜/인터넷 프로토콜은 인터넷에서 네트워크 장치를 상호 연결하는 데 사용되는 통신 프로토콜 모음입니다. TCP/IP는 개인 네트워크(인트라넷 또는 엑스트라넷)의 통신 프로토콜로도 사용할 수 있습니다. TCP/IP 통신(및 TCP/IP 장치에서 데이터 수집)은 처음에는 어려워 보일 수 있지만 실제로는 매우 간단한 통신 도구입니다. 소켓은 서버 역할을 하고 들어오는 메시지를 수신하거나 클라이언트로 다른 응용 프로그램에 연결하도록 구성할 수 있습니다. TCP/IP 소켓의 양쪽 끝이 연결되면 통신은 양방향입니다.
클라이언트가 서버와 통신할 수 있도록 서버를 올바른 주소에 바인딩하는 것이 중요합니다. 이전 예제에서는 모두 `localhost`를 IP 주소로 사용했으며, 이 주소는 동일한 서버에서 실행되는 클라이언트에 대한 연결을 제한합니다. gethostname()에서 반환된 값과 같은 서버의 공용 주소를 사용하여 다른 호스트가 연결할 수 있도록 합니다. 이 예제는 명령줄 인수를 통해 지정된 주소에서 수신하도록 에코 서버를 수정합니다.