2017-10-26 6 views
1

간단한 인스턴트 메시지 채팅 클라이언트와 서버를 TCP로 만들었습니다. 둘 다 Adobe AIR에서 실행됩니다. 그것은 훌륭하게 작동하며 기본적인 네트워킹 프로그래밍을 배우는 흥미로운 방법이었습니다.클라이언트에 도달하기 전에 서버에서 패킷을 편집 할 수 있습니까?

내 질문 : 채팅 서버에서 보낸 패킷의 데이터를 서버 또는 클라이언트를 사용하지 않고 클라이언트에 도착하기 전에 변경할 수 있습니까? 아마 프로그램처럼?

저는 네트워크 프로그래밍에 익숙하지 않으므로, 이것이 바보 같은 질문 인 경우 사과드립니다.

+0

이것은 더 복잡한 것 같습니다. TCP에는 세그먼트의 내용을 변경하는 경우 다시 계산해야하는 CRC가 있습니다. CRC는 또한 의사 헤더를 사용합니다. IPv4 패킷의 패킷 헤더에서 아무 것도 변경하면 IPv4 헤더 체크섬을 다시 계산해야합니다. IEEE LAN 프레임에서이 값을 수정하는 경우 FCS를 다시 계산해야합니다. –

답변

2

귀하의 질문은 매우 광범위합니다. 그래서 대답은 광범위합니다. 예. 있을 수있다.

그 때문에 클라이언트와 서버간에 패킷을 가져와 세 번째 프로그램을 통과해야합니다. 이를 달성하기위한 방법이 많이 있습니다.

먼저 자신의 컴퓨터 (클라이언트/서버)에서 다양한 저수준 API를 사용하여 운영 체제의 패킷에 액세스 할 수 있습니다. 예를 들어 iptables+nfqueue in Linux 또는 Windows Filtering Platform on Windows입니다.

두 번째로, 클라이언트 또는 서버와 동일한 서버에 상주하거나 상주하지 않을 수도있는 일부 proxy program을 통해 의도적으로 패킷에 액세스하여 패킷에 액세스 할 수 있습니다.

셋째, 네트워크 자체에서 패킷을 가져 와서 패킷에 액세스 할 수 있습니다. 예를 들어, 일부 Linux 머신을 라우터로 설정하여 클라이언트와 서버 사이에 위치시킬 수 있습니다 (동일한 시스템에 있지 않은 한). 이 리눅스 머신은 이제 그 패킷을 통과하는 모든 패킷에 접근 할 수있게되며, 앞서 언급 한 nfqueue와 같은 후크를 사용하여 다양한 사용자 공간 프로그램에 전달할 수 있습니다.

관련 문제