1.6.3 텔넷(Telnet)을 이용한 실제 예제

HTTP는 TCP/IP를 사용하고 있으며, 이진 형식이 아닌 문자열 기반이기 때문에, 웹서버와 직접 대화하는 것도 간단하다.

웹브라우저 연결의 기본적인 절차

  • HTTP와 TCP/IP: HTTP는 문자열 기반의 TCP/IP 프로토콜을 사용한다.
  • 웹브라우저 연결 절차:
    1. URL 입력 (http://www.test.com:80/tool.html).
    2. 포트번호 80 추출한다.
    3. 호스트명 (www.test.com) 추출한다.
    4. DNS를 통해 IP 주소 획득한다.(www.test.com -> 161.58.228.45)
    5. IP 주소 161.58.228.45 포트 80에 연결한다.
    6. 클라이언트에서 서버로 HTTP GET 요청 전송한다.
    7. 서버에서 클라이언트로 HTTP 응답 수신한다.
    8. 클라이언트에서 HTTP 응답을 읽는다.
    9. 커넥션 종료한다.
    10. 브라우저가 페이지 표시한다.
  • 텔넷 유틸리티의 역할: 키보드를 TCP 포트에 연결하고 TCP 포트의 출력을 화면에 표시한다.
  • 텔넷의 사용법:
    • 텔넷으로 웹 서버와 직접 대화 가능하다.
    • 웹 서버가 클라이언트로써 텔넷의 입력을 처리하고, 응답을 화면에 출력한다.
  • 실습 사례: https://jsonplaceholder.typicode.com 사이트를 텔넷으로 접속한다.
    • telnet jsonplaceholder.typicode.com 443 명령을 실행한다.
    • GET /todos/1 HTTP/1.1Host: jsonplaceholder.typicode.com 입력 후 빈 줄 입력하여 요청 완료한다.
    • 400 Bad Request 응답 수신.

실습

여기선 https://jsonplaceholder.typicode.com으로 실습해보겠다.

brew install telnet
# 텔넷을 이용한 HTTP 트랜잭션
(base) hyungju-lee@hyungju-leeui-MacBookAir ~ % telnet jsonplaceholder.typicode.com 443

Trying 172.67.167.151...
Connected to jsonplaceholder.typicode.com.
Escape character is '^]'.

GET /todos/1 HTTP/1.1
Host: jsonplaceholder.typicode.com

HTTP/1.1 400 Bad Request
Server: cloudflare
Date: Sat, 30 Dec 2023 11:58:04 GMT
Content-Type: text/html
Content-Length: 155
Connection: close
CF-RAY: -

<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare</center>
</body>
</html>

 





 
 
















  • 텔넷의 한계: 텔넷은 HTTP 클라이언트는 잘 흉내 내지만 서버로는 부적합하며, 자동화된 스크립트 작성에도 적합하지 않다.
  • 대안 도구: 보다 유연한 nc(netcat) 도구가 있으며, 이는 HTTP를 포함한 UDP 또는 TCP 기반 트래픽을 조작하고 스크립트할 수 있다.