Multiplex Socket
1.0.0
하얼빈공업대학 인터넷 고급프로그래밍 숙제입니다.
저장소에는 두 개의 프로젝트가 포함되어 있습니다.
select를 사용한 파일 전송 서비스를 위한 TCP 및 UDP 다중화 서비스입니다.
서버는 TCP 및 UDP 연결을 모두 허용할 수 있습니다.
네트워크 인터페이스를 통해 시스템으로 들어오고 나가는 네트워크 트래픽을 가로채는 패킷 스니퍼입니다.
스니퍼는 recvfrom 루프에 들어갈 때 들어오는 모든 패킷을 수신할 때 원시 소켓을 사용합니다.
참고: 이 프로젝트는 Linux 또는 Unix(Mac OS X 포함)에서 컴파일해야 합니다.
make
명령을 사용하여 이 프로젝트를 간단히 컴파일할 수 있습니다.
컴파일 작업이 성공하면 서버를 실행할 수 있습니다.
./server <PortNumber>
그런 다음 UDP 클라이언트 또는 TCP 클라이언트를 시작할 수 있습니다.
# for TCP client
./tcp-client <ServerIP> <PortNumber>
# for UCP client
./udp-client <ServerIP> <PortNumber>
TCP 클라이언트에서는 서버에서 파일을 가져올 수 있습니다.
GET <Path to the file in server>
알려진 문제:
참고: Linux/Unix 시스템에서는 인터페이스에서 원시 패킷을 수신하려면 루트 권한이 필요합니다. 원시 패킷을 수신하는 프로세스는 해당 인터페이스를 사용하는 다른 모든 프로세스 및 사용자의 통신에 액세스할 수 있기 때문에 이러한 제한은 보안 예방 조치입니다.
sudo ./packet-sniffer
들어오는 모든 패킷은 packet-sniffer.log
파일에 덤프됩니다.
이 프로젝트는 Apache 라이선스에 따라 오픈 소스로 제공됩니다.