질문:
Go에서 원시 소켓을 사용할 수 있습니까? DHCP 패킷에 대한 사용자 정의 IP 소스 주소가 있습니까?
답변:
예, DHCP 패킷의 IP 소스 주소를 수정하려면 원시 소켓이 필요합니다.
경고: 원시 패킷을 조작하면 보안에 심각한 영향을 미칠 수 있습니다. 루트 권한 또는 CAP_NET_RAW 기능으로 애플리케이션을 실행해야 합니다.
Go의 표준 넷 라이브러리는 특수한 특성과 잠재적인 API 변경으로 인해 원시 소켓을 지원하지 않습니다. 그러나 go.net 하위 저장소는 이러한 목적으로 ipv4 패키지를 제공합니다.
DHCP 패킷을 조작하려면 다음 단계를 따르십시오.
예:
<code class="go">import "code.google.com/p/go.net/ipv4" func main() { conn, err := ipv4.NewRawConn("udp") defer conn.Close() buf := make([]byte, 65536) for { hdr, payload, _, err := conn.ReadFrom(buf) if err != nil { ... } hdr.ID = 0 hdr.Checksum = 0 hdr.Dst = ... if err := conn.WriteTo(hdr, payload, nil); err != nil { ... } } }</code>
위 내용은 Go의 원시 소켓을 사용하여 DHCP 패킷 소스 IP 주소를 수정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!