2011-01-17 2 views

답변

6

소켓을 사용하는 경우 패킷 헤더에 올바른 TCP 원본 포트를 채우십시오.

만약, 대신, 당신은 TCP 소켓 인터페이스 (socket(), connect() 친구)를 사용하는, 당신은 클라이언트 소켓의 bind() 시스템 호출을 호출하여 소스 포트를 설정할 수 있습니다 - 정확하게 당신이 할 수신 대기 포트를 설정하는 서버 소켓 용.

+0

struct sockaddr_in { short sin_family; 부호없는 short sin_port; struct in_addr sin_addr; char sin_zero [8]; }; - 항구를 어디에서 설정해야합니까? –

+2

포트가 sin_port – Erik

+0

@Erik에 설정된 다음 bind()를 수행 한 다음 sin_port가 서버의 포트로 설정되고 connect()가 설정됩니다. –

1

원시 소켓을 사용하여 TCP 연결을 만드는 것은 어렵고 불가능합니다. 의 전체 tcp 프로토콜을 구현해야합니다 (커널이 해당 인터페이스의 해당 주소에 IP 바인딩을 가지고있는 경우).

아마도 이것은 원하는 것이 아닙니다. 그러나, 원한다면 원하는 모든 소스 포트로 tcp 프레임을 보내는 것이 중요합니다. TCP 헤더에서 TCP 포트를 지정할 수 있습니다. 물론 TCP 레이어를 구현하는 경우 이해할 필요가있다.

관련 문제