
\n
텔넷에서 . 이 아닌 \r\n
. 만 보내도록 할 수 있는 방법이 있는지 궁금합니다 .
예를 들어, 한 프로세스가 다음과 같은 포트에서 수신 대기 중인 경우 수신된 트래픽의 바이트를 인쇄하려면 다음을 수행합니다.
nc -l 1234 | xxd -c 1
를 사용하여 netcat에서 연결하고 nc localhost 1234
"hi[enter]"를 입력합니다.
0000000: 68 h
0000001: 69 i
0000002: 0a .
를 사용하여 텔넷에서 연결하고 telnet localhost 1234
"hi[enter]"를 입력합니다.
0000000: 68 h
0000001: 69 i
0000002: 0d .
0000003: 0a .
Telnet은 개행 문자로 0x0a 대신 0x0d0a를 보냅니다. 나는 이것이 LF가 아닌 CRLF라는 것을 이해합니다. ^M
또는 를 사용하면 CRLF도 보냅니다 ^J
.
를 사용하여 이 문제를 직접적으로 해결하는 솔루션을 찾았다고 생각했지만 toggle crlf
, 이 옵션을 설정해도 Telnet은 항상 \r\n
. 나는 또한 다양한 텔넷 클라이언트에서 이것을 시도했기 때문에 토글이 무엇을 해야 하는지 오해하고 있는 것 같습니다.
\n
Enter 키나 다른 키를 사용하여 텔넷을 통해 보내는 방법이 있습니까 ?
답변1
협상할 수 있다바이너리 모드. 이 모드에 들어가면 종료할 수 없습니다. 협상은 telnet
클라이언트가 서버에 특수 바이트 시퀀스를 보내는 것을 의미하며, 프로토콜을 구현하지 않는 경우 이를 무시해야 합니다.
후속 데이터는 라인 모드에서 변경되지 않은 채 전송됩니다. 고객:
$ telnet localhost 1234
Connected to localhost.
Escape character is '^]'.
^]
telnet> set binary
Negotiating binary mode with remote host.
hi
^]
telnet> quit
그리고 서버
$ nc -l 1234 | xxd -c 1
00000000: ff .
00000001: fd .
00000002: 00 .
00000003: ff .
00000004: fb .
00000005: 00 .
00000006: 68 h
00000007: 69 i
00000008: 0a .
클라이언트 telnet
에는 바이너리 모드에서 시작할 수 있는 옵션이 있을 수도 있고,~/.telnetrc
localhost
set binary
각 방향에서 독립적으로 바이너리 모드를 적용할 수 있으므로 선호할 수도 있습니다 set outbinary
.
답변2
없음텔넷, 해당 RFC에서는 캐리지 리턴/줄 바꿈을 줄 끝으로 지정하기 때문입니다. 보다RFC 5198의 부록 C.