酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

telnetを使ってTCP/IPで通信をする

Telnetを使ってTCP/IPの通信を行う例題です。WebサイトやMailへのアクセスもtelnetを使って簡単にテストすることができます。

この実験を通して、WebブラウザとWebサーバとの間でどのように通信が行われているのかを知ることができます。


telnetとは?

インターネットなどのTCP/IPネットワークで、ネットワークにつながれたコンピュータを遠隔操作をおこなうための通信方式。データを平文で送信するため、セキュリティ上の懸念があり、現在はSSHがその役割を担っている。

telnetを使ってWebサイトの情報を取得

telnetを使ってICP/IPの通信を行うことができるので、webサイトからhtmlを取得することも簡単にできます。例えば、www.yahoo.co.jpからhtmlを取得する場合は次のようにターミナルを実行するだけです。

1
2
3
4
telnet www.yahoo.co.jp 80
GET / HTTP/1.0[Enter]
Host: www.yahoo.co.jp[Enter]
[Enter]

すると出力結果は次のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 21 Jun 2014 21:22:07 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: -1
Pragma: no-cache
X-XRDS-Location: https://open.login.yahooapis.jp/openid20/www.yahoo.co.jp/xrds
Vary: Accept-Encoding

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
....
</html>

telnetからでもHTMLが取得できている事がわかります。

telnetを使ってGmailを送信

次にtelnetを使ってメールを送信してみます。

まずは、gmailのメールサーバを検索します。

1
2
3
4
5
6
7
8
9
nslookup -type=mx gmail.com                                                    Server:   10.0.1.1
Address:  10.0.1.1#53

Non-authoritative answer:
gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.

複数のドメインが優先順位をつけて登録されていることがわかります。

今回はgmail.com mail exchanger = 5 gmail-smtp-in.l.google.com.を使って、通信を行ってみます。

1
telnet gmail-smtp-in.l.google.com 25

ですが残念ながら僕の環境ではtelnetで接続できるmailサーバを発見できずorz

telnetを使ってメールのテストを行う方法

telnetでメールを送信する方法

このあたりを見ながら、できるような気持ちになっておきますw

あとがき

実際にはtelnetもTCP/IPのコネクションを行うための処理は隠蔽してくれているため、本当意味でのローレベルではないですが、擬似的にWebブラウザやメールアプリの通信を勉強できます。

10秒でバイトが見つかるアプリ「Short.Works」作ってます!

iPhoneアプリ Short.Works
短期のアルバイトを10秒で探して、応募ができるiPhone/Androidアプリ『Short.Works』を9月リリース目標に開発しています。

どんなアプリ?

* ソーシャル上の「つながり」を通じて、友達や知り合いにアルバイトが拡がる
* 空いてる時間に「ボタンひとつ」で「すぐ」にアルバイトが見つかる
* スケジュールを登録すると、自分にあったアルバイトがレコメンドされる

一緒にアプリを良くしませんか?

もしアプリに興味を持って頂けるようなら、『メールアドレス contact@short.works』か『Twitter @shortworkus』にメッセージ下さい^^

1) iPhone / Android / Railsアプリ / インフラ構築の開発にご協力頂ける方
2) マーケティングにご協力頂ける方
半日〜1日だけとか週末プロジェクトとか、ガッツリやってみたいとか相談のります。 報酬もテンポラリー、レベニューシェア、その他もろもろ何でも相談に乗ります!何でも言ってください。

押さえておきたい書籍

いかがだったでしょうか?
もし説明がわかりにくかったり、間違っている場所があればぜひ一言!

Comments