텔넷 에서 \n
.\r\n
예를 들어, 프로세스가 해당 포트에서 수신 대기 중인 경우 수신된 트래픽의 바이트를 인쇄합니다.
nc -l 1234 | xxd -c 1
netcat을 사용하여 연결 nc localhost 1234
하고 "hi[enter]"를 입력합니다.
0000000: 68 h
0000001: 69 i
0000002: 0a .
Telnet을 사용하여 연결 telnet localhost 1234
하고 "hi[enter]"를 입력합니다.
0000000: 68 h
0000001: 69 i
0000002: 0d .
0000003: 0a .
Telnet은 개행 문자로 0x0a 대신 0x0d0a를 보냅니다. LF가 아니라 CRLF인 것으로 알고 있습니다. or를 사용하면 ^M
CRLF도 전송됩니다 ^J
.
나는 telnet을 사용하여 이 문제에 대한 해결책을 직접 찾았다고 생각했지만 toggle crlf
, 이 옵션을 설정해도 telnet은 항상 를 보냅니다 \r\n
. 또한 다양한 telnet 클라이언트에서도 이것을 시도했기 때문에 스위치가 무엇을 해야 하는지 오해한 것 같습니다. .
\n
Enter 또는 다른 수단을 사용하여 telnet을 통해 보낼 수 있는 방법이 있습니까 ?
답변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.