3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Webアプリの脆弱性診断員も知っておくべきネットワークの基礎の基礎

Posted at

パソコン同士が通信する際に避けて通れない技術が「プロトコル」

例えば、2人の人が会話をするときに、言語が決まっていなければ意思疎通は難しい。
これはパソコン同士でも言えることで、世の中にはパソコンのメーカーが数多くあります。
基本的な仕組みは同じですが、通信になると、同じ通信の規格でやり取りをしないと、データ自体が送信されません。
そこで、相互に通信(会話)するために決められた約束事や手順がプロトコルという技術というわけです。

でもプロトコルといわれても、ぶっちゃけ根本的な流れをコード書いてみてみないとわからないのが本音。

どうしたらネットワークの仕組みを自宅で体系的に理解できるのか?

やっぱり手を動かして学ぶのが一番手っ取り早い
最初に学ぶのに一番おすすめするのがソケットプログラミングです。
なぜなら、根本的な通信のやり取りをどのように行っているかというのがコードを通じてわかるから、なんですね。
ネットワークの仕組みを学ぶにはもってこいではないかと。

というわけで、Python3でソケットプログラミングに挑戦してみました。
参考サイトに書いてあるコードは2系のものだったので、ちょっと苦労しましたが、通信の理解が深まった気がします。
ローカルホスト上でチャットをするコードです。

server.py
import socket

HOST='localhost'
PORT=5007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
soc, addr=s.accept()
print("Connected by",addr)
print("Let's chat!")

while 1:
    data = input('(server) > ')
    soc.send(bytes(data,'utf-8'))
    data = soc.recv(1024)
    print("(client) >" , data)
    if data == "quit":
        break
soc.close()
client.py
import socket

HOST='localhost'
PORT=5007

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

print("just a moment")

while 1:
    data = s.recv(1024)
    print('(server) > ', data)
    data = input('(client)>')
    s.send(bytes(data,'utf-8'))
    if data == 'quit':
        break
s.close()

チャットのやり方

  • ターミナルを二つ立ち上げる

  • それぞれ起動させる。順番はserver.pyを立ち上げてからclient.pyを起動させる

  • 文字を入力する

とまぁこんな感じでした。
通信がbyteで処理されているということがわかるだけでも、今回の学びは価値があるのではないかと。
是非やってみてください。

参考サイト

Pythonでネットワークプログラミング(1)
http://d.hatena.ne.jp/Megumi221/20110310/1299745785

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?