SlideShare a Scribd company logo
1 of 25
共有ライブラリを用いて
TCP通信してみる
エンジニア志望学生LT大会 - TechStudyGroup #1
2020/04/23
1
OthloTech 吉川 大貴
自己紹介(よしかわって?)
愛知工業大学 大学院1年
モバイルネットワーク分野を研究
みんなと一緒でテクノロジが大好き
• ハワイで行われた国際学会に参加
InternShip
• Spring Intern Infrastructure 2018 - Cookpad
• Treasure 2018 - VOYAGE GROUP
• Sunrise 2nd 2019 - VOYAGE GROUP 2
Internet Protocol(IP)ってなに
IPは、インターフェイスからパケットを送出す
るのみで、相手先まで確実にパケットが届くこ
とは絶対ではない。
そのため、確実な送受信を必要とする場合、IP
より上位のトランスポート層のプロトコルであ
るTCPなどを使用する必要。
3
IPv4とIPv6の違い
4
IPv4アドレスは、32ビットのアドレス空間を持つ。2^32(=約43億)個
IPv6アドレスは、128ビットのアドレス空間を持つ。2^128個
Q. なぜIPv4とIPv6は相互通信できないか
A. 上記のようにヘッダが異なるため相互通信不可
TCP通信ってなに
5
TCPデータ
TCP ACK
情報の送信
ACKの返信
共有ライブラリってなに
6
Program A
静的ライブラリ
(libtcpip.a)
Program B
静的ライブラリ
(libtcpip.a)
● 静的ライブラリ では
Program AとProgram Bのビルド時に、
静的ライブラリとリンクする。その
ため、実行ファイルの一部になる。
静的ライブラリを更新する場合は
Program A、Program Bを再度ビルド
する必要がある。
Program A
共有ライブラリ
(libtcpip.so)
Program B
● 共有ライブラリ では
Program AとProgram Bは実行時に共
有ライブラリとリンクする。
共有ライブラリを更新しても
Program AとProgram Bで使用するイ
ンターフェースに変更が無ければ、
再度ビルドする必要はない。
共有ライブラリの作り方
ビルドツールを利用する
• autotools
• cmake
• Meson
依存関係をそれとなく解決してくれるツール
7
Autotoolsについて
GNU Autotoolsは主に、Autoconf, Automake,
libtoolsの3つから形成されている。
開発者は、Makefile.amとconfigure.acを提供す
ることにより、システムを構築し、私ステムの
外部依存関係とビルドシステム構成を管理する。
8
GNU Autotools workflow
9
Makefile.amってなに
Makefile.amは移植性の高いMakefileを作るための
Makefile.inの雛形。Makefile.inはconfigure scriptで
Makefileに変換。
10
Configure.acってなに
configure.acとは、autoconfでconfigureスクリプト
に変換されるファイル。中身はマクロが大量に
定義されているShell Script。
11
FFI(Foreign Function Interface)について
FFIとは、あるプログラミング言語
から他のプログラミング言語で定
義された関数などを利用するため
の機構。FFIは、CやC++などの関数
やメソッドを呼び出し、特定のプ
ラットフォームやOS固有の機能な
どを利用するために用いられる。
12
テストコードを書く
Autotoolsでは、test以下がテスト対象となる
Makefile.amに以下のように記載することで、
テストコードを作成可能
13
共有ライブラリのヘッダー
Autotoolsでは、Makefile.amにヘッダーファイ
ルのパスを書き込むことにより、src内のコー
ドで呼び出し可能
14
共有ライブラリのソース
src内のMakefile.amを作成
ヘッダーファイルの読み込
みとlaファイルの作成を行
うために lib_LTLIBRARIES を
定義
15
テストしてみよう
テストコードを動かすコマンドは
make check で実行
テストがPASSすると緑、FAILなら赤
16
Demo
そろそろ飽きるよね?
動かしてみます
(教授に見つかりませんように)
17
もっと共有ライブラリ作成したい
18
Makefile.amの詳細
19
Configure.acで必要なものを
20
CIの導入をする
21
テストコードをもっと深掘り
22
SSL/TLS通信したくない?
23
SSL/TLS通信ってなに
24
OpenSSLを呼び出したい
25

More Related Content

Similar to VOYAGE_GROUP_20200423

Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎なべ
 
CpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkCpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkTakaaki Hoyo
 
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験TomohisaYamazoe
 
第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎hakoika-itwg
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppugMiya Kohno
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 
EtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみたEtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみたミソジ
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBMToshiki Tsuboi
 
2016-ShowNetステージ-EVPN相互接続検証レポート
2016-ShowNetステージ-EVPN相互接続検証レポート2016-ShowNetステージ-EVPN相互接続検証レポート
2016-ShowNetステージ-EVPN相互接続検証レポートInterop Tokyo ShowNet NOC Team
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)v6app
 
究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!Ryosuke Otsuya
 
if-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイント
if-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイントif-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイント
if-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイントSORACOM,INC
 
45分で理解する ドッコムマスタートリプルスター受験対策 2012
45分で理解する ドッコムマスタートリプルスター受験対策 201245分で理解する ドッコムマスタートリプルスター受験対策 2012
45分で理解する ドッコムマスタートリプルスター受験対策 2012Yukio Saito
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばYoshihiro Nakajima
 
WebRTC/ORTCの最新動向まるわかり!
WebRTC/ORTCの最新動向まるわかり!WebRTC/ORTCの最新動向まるわかり!
WebRTC/ORTCの最新動向まるわかり!Yusuke Naka
 
IPv6 を始めてみた
IPv6 を始めてみたIPv6 を始めてみた
IPv6 を始めてみたmiki koganei
 
WebRTC入門 ~沖縄編~
WebRTC入門 ~沖縄編~WebRTC入門 ~沖縄編~
WebRTC入門 ~沖縄編~Ryosuke Otsuya
 
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用Ruo Ando
 

Similar to VOYAGE_GROUP_20200423 (20)

Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎Javaで学ぶネットワークプログラミングの基礎
Javaで学ぶネットワークプログラミングの基礎
 
CpawCTF 勉強会 Network
CpawCTF 勉強会 NetworkCpawCTF 勉強会 Network
CpawCTF 勉強会 Network
 
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
 
第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎第7回勉強会 ネットワークの基礎
第7回勉強会 ネットワークの基礎
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppug
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
EtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみたEtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみた
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
2016-ShowNetステージ-EVPN相互接続検証レポート
2016-ShowNetステージ-EVPN相互接続検証レポート2016-ShowNetステージ-EVPN相互接続検証レポート
2016-ShowNetステージ-EVPN相互接続検証レポート
 
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
 
究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!究極のゲーム用通信プロトコルを探せ!
究極のゲーム用通信プロトコルを探せ!
 
2016-ShowNet-報告資料
2016-ShowNet-報告資料2016-ShowNet-報告資料
2016-ShowNet-報告資料
 
TCP/IP完全理解
TCP/IP完全理解TCP/IP完全理解
TCP/IP完全理解
 
if-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイント
if-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイントif-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイント
if-up 2017 | A1:IoT通信の選択肢とLoRaWANに見るデバイス開発のポイント
 
45分で理解する ドッコムマスタートリプルスター受験対策 2012
45分で理解する ドッコムマスタートリプルスター受験対策 201245分で理解する ドッコムマスタートリプルスター受験対策 2012
45分で理解する ドッコムマスタートリプルスター受験対策 2012
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
WebRTC/ORTCの最新動向まるわかり!
WebRTC/ORTCの最新動向まるわかり!WebRTC/ORTCの最新動向まるわかり!
WebRTC/ORTCの最新動向まるわかり!
 
IPv6 を始めてみた
IPv6 を始めてみたIPv6 を始めてみた
IPv6 を始めてみた
 
WebRTC入門 ~沖縄編~
WebRTC入門 ~沖縄編~WebRTC入門 ~沖縄編~
WebRTC入門 ~沖縄編~
 
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
 

VOYAGE_GROUP_20200423