เบชเบฐเบเบฒเบเบเบตเบเบธเบเบเบปเบ, เบเปเบญเบเบเบทเป Sasha, เบเปเบญเบเปเบเบฑเบเบเบนเปเบเปเบฒเบเบฒเบเบฒเบเบเบปเบเบชเบญเบ backend เบขเบนเป FunCorp. เบเบงเบเปเบฎเบปเบฒ, เบเบทเบเบฑเบเบเบฑเบเบเบปเบเบญเบทเปเบ, เปเบเปเบเบฐเบเบดเบเบฑเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบฒเบเบเปเบฅเบดเบเบฒเบ. เปเบเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ, เบเบตเปเปเบฎเบฑเบเปเบซเปเบงเบฝเบเบเบฒเบเบเปเบฒเบเบเบฒเบ, เปเบเบฒเบฐเบงเปเบฒ ... เบกเบฑเบเบเปเบฒเบเบเบงเปเบฒเบเบตเปเบเบฐเบเบปเบเบชเบญเบเปเบเปเบฅเบฐเบเปเบฅเบดเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเปเปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเปเบญเบเบกเบตเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบดเปเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เปเบเบดเปเบเบกเบฑเบเบเบฐเปเบเบตเบเบเบทเปเบเปเบเปเบเบทเบญเบเปเบฒเบ.
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบเบชเบญเบเบเบปเบเบเบฐเปเบซเบเบเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบงเบเบเบฒเปเบเบดเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบทเปเบเบเบฒเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเบกเบตเบเบฑเบเบซเบฒเปเบเบทเบญเบเปเบฒเบ.
เบเบฒเบเบเบณเบฅเบญเบเบเบฑเบเบซเบฒเปเบเบทเบญเบเปเบฒเบ
เปเบเบเบเบปเบเบเบฐเบเบด, เบเบญเบเปเบงเปเบเปเบเบทเบเบเบปเบเบชเบญเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบญเบดเบเปเบเบตเปเบเบฑเบเบเบตเปเบเบต. เปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฐเบฅเบดเบเบเบตเปเบฎเบธเบเปเบฎเบ, เบชเบดเปเบเบเปเบฒเบเปเบญเบฒเบเบเบฐเบเปเปเบฅเบฝเบเบเปเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบปเบเบชเบญเบเปเบเบเบเบฒเบเปเบเปเบเบทเปเบญเบเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบเปเปเบเบต. เปเบ Linux, เบเบฐเปเบซเบเบเบเบฐเบเปเบงเบเปเบซเปเบงเบฝเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเบฅเบญเบเปเบเบทเปเบญเบเปเบเบเบฑเปเบเบเปเบฒเบง tc.
tc(abbr. เบเบฒเบโเบเบฒเบโเบเบงเบโเบเบธเบกโเบเบฐโเบฅเบฒโเบเบญเบโ) เบญเบฐโเบเบธโเบเบฒเบโเปเบซเปโเบเปเบฒเบโเปเบเบทเปเบญโเบเปเบฒโเบเบปเบโเบเบฒเบโเบชเบปเปเบโเบเบญเบโเบเบญเบโเปเบเบทเบญโเบเปเบฒเบโเปเบโเบฅเบฐโเบเบปเบโ. เบเบปเบเบเบฐเปเบซเบเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบตเปเบเบดเปเบเปเบซเบเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบเบงเบเบกเบฑเบ
เปเบซเปเปเบเบตเบเบเบปเบงเปเบเบตเบเปเบงเบต echo เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ (เบเปเบญเบเปเบเป
ncat -l 127.0.0.1 12345 -k -c 'xargs -n1 -i echo "Response: {}"'
เปเบเบทเปเบญเบชเบฐเปเบเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบธเบเปเบงเบฅเบฒเปเบเปเบเปเบฅเบฐเบเบฑเปเบเบเบญเบเบเบญเบเบเบฒเบเปเบเปเบเบญเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเปเบญเบเบเบฝเบเบชเบฐเบเบดเบ Python เบเปเบฒเบเปเบเบตเปเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเป. เบเบฒเบเบเบปเบเบชเบญเบ เบเบฑเบเปเบเบตเบเปเบงเบต echo เบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบฅเบนเบเบเปเบฒ
#!/bin/python
import socket
import time
HOST = '127.0.0.1'
PORT = 12345
BUFFER_SIZE = 1024
MESSAGE = "Testn"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
t1 = time.time()
print "[time before connection: %.5f]" % t1
s.connect((HOST, PORT))
print "[time after connection, before sending: %.5f]" % time.time()
s.send(MESSAGE)
print "[time after sending, before receiving: %.5f]" % time.time()
data = s.recv(BUFFER_SIZE)
print "[time after receiving, before closing: %.5f]" % time.time()
s.close()
t2 = time.time()
print "[time after closing: %.5f]" % t2
print "[total duration: %.5f]" % (t2 - t1)
print data
เปเบซเปเปเบเบตเบเบกเบฑเบเปเบฅเบฐเปเบเบดเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเบเบฒเบเปเบเปเบเบญเบ lo เปเบฅเบฐเบเบญเบ 12345:
[user@host ~]# python client.py
[time before connection: 1578652979.44837]
[time after connection, before sending: 1578652979.44889]
[time after sending, before receiving: 1578652979.44894]
[time after receiving, before closing: 1578652979.45922]
[time after closing: 1578652979.45928]
[total duration: 0.01091]
Response: Test
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:42:59.448601 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [S], seq 3383332866, win 43690, options [mss 65495,sackOK,TS val 606325685 ecr 0,nop,wscale 7], length 0
10:42:59.448612 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [S.], seq 2584700178, ack 3383332867, win 43690, options [mss 65495,sackOK,TS val 606325685 ecr 606325685,nop,wscale 7], length 0
10:42:59.448622 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 606325685 ecr 606325685], length 0
10:42:59.448923 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 606325685 ecr 606325685], length 5
10:42:59.448930 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [.], ack 6, win 342, options [nop,nop,TS val 606325685 ecr 606325685], length 0
10:42:59.459118 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 606325696 ecr 606325685], length 14
10:42:59.459213 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [.], ack 15, win 342, options [nop,nop,TS val 606325696 ecr 606325696], length 0
10:42:59.459268 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 606325696 ecr 606325696], length 0
10:42:59.460184 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 606325697 ecr 606325696], length 0
10:42:59.460196 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 606325697 ecr 606325697], length 0
เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบกเบฒเบเบเบฐเบเบฒเบ: เบเบฒเบเบเบฑเบเบกเบทเบชเบฒเบกเบเบฒเบ, PSH / ACK เปเบฅเบฐ ACK เปเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบชเบญเบเบเบฑเปเบ - เบเบตเปเปเบกเปเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเปเบฒเบฎเปเบญเบเบเปเปเบฅเบฐเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เปเบฅเบฐ FIN / ACK เปเบฅเบฐ ACK เบชเบญเบเบเบฑเปเบ - เบชเปเบฒเปเบฅเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป.
เบเบฒเบเบเบฑเบเบเปเบฒเบเบญเบเปเบเบฑเบเปเบเบ
เบเบญเบเบเบตเปเปเบซเปเบเบฑเปเบเบเปเบฒเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเปเบเบฑเบ 500 เบกเบดเบเบฅเบดเบงเบดเบเบฒเบเบต:
tc qdisc add dev lo root netem delay 500ms
เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบซเบฑเบเบงเปเบฒเบชเบฐเบเบดเบเบเบญเบเบเบตเปเปเบฅเปเบเปเบเบฑเบเปเบงเบฅเบฒ 2 เบงเบดเบเบฒเบเบต:
[user@host ~]# ./client.py
[time before connection: 1578662612.71044]
[time after connection, before sending: 1578662613.71059]
[time after sending, before receiving: 1578662613.71065]
[time after receiving, before closing: 1578662614.72011]
[time after closing: 1578662614.72019]
[total duration: 2.00974]
Response: Test
เปเบกเปเบเบซเบเบฑเบเบขเบนเปเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ? เปเบซเปเปเบเบดเปเบ:
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
13:23:33.210520 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [S], seq 1720950927, win 43690, options [mss 65495,sackOK,TS val 615958947 ecr 0,nop,wscale 7], length 0
13:23:33.710554 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [S.], seq 1801168125, ack 1720950928, win 43690, options [mss 65495,sackOK,TS val 615959447 ecr 615958947,nop,wscale 7], length 0
13:23:34.210590 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 615959947 ecr 615959447], length 0
13:23:34.210657 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 615959947 ecr 615959447], length 5
13:23:34.710680 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [.], ack 6, win 342, options [nop,nop,TS val 615960447 ecr 615959947], length 0
13:23:34.719371 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 615960456 ecr 615959947], length 14
13:23:35.220106 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [.], ack 15, win 342, options [nop,nop,TS val 615960957 ecr 615960456], length 0
13:23:35.220188 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 615960957 ecr 615960456], length 0
13:23:35.720994 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 615961457 ecr 615960957], length 0
13:23:36.221025 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 615961957 ecr 615961457], length 0
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเบเบงเบฒเบกเบเบฑเบเบเปเบฒเบเบตเปเบเบฒเบเบงเปเบฒเบเบฐเปเบเบฑเบเปเบเบดเปเบเบซเบเบถเปเบเบเบญเบเบงเบดเบเบฒเบเบตเปเบเปเบเบฒเบเบปเบเบขเบนเปเปเบเบเบฒเบเปเบเปเบเบญเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบเปเบฒเบเบงเบฒเบกเบเบฑเบเบเปเบฒเบซเบผเบฒเบ: kernel เปเบฅเบตเปเบกเบชเบปเปเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบ TCP เบเบทเบเปเปเป. เบเปเปเบซเปเบเปเบฝเบเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเปเบเบฑเบ 1 เบงเบดเบเบฒเบเบตเปเบฅเบฐเปเบเบดเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ (เบเปเบญเบเบเบฐเบเปเปเบชเบฐเปเบเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบฅเบนเบเบเปเบฒ, เบเบฒเบเบงเปเบฒเบเบฐเบกเบต 4 เบงเบดเบเบฒเบเบตเปเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบฑเบเบซเบกเบปเบ):
tc qdisc change dev lo root netem delay 1s
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
13:29:07.709981 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [S], seq 283338334, win 43690, options [mss 65495,sackOK,TS val 616292946 ecr 0,nop,wscale 7], length 0
13:29:08.710018 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [S.], seq 3514208179, ack 283338335, win 43690, options [mss 65495,sackOK,TS val 616293946 ecr 616292946,nop,wscale 7], length 0
13:29:08.711094 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [S], seq 283338334, win 43690, options [mss 65495,sackOK,TS val 616293948 ecr 0,nop,wscale 7], length 0
13:29:09.710048 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 616294946 ecr 616293946], length 0
13:29:09.710152 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 616294947 ecr 616293946], length 5
13:29:09.711120 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [S.], seq 3514208179, ack 283338335, win 43690, options [mss 65495,sackOK,TS val 616294948 ecr 616292946,nop,wscale 7], length 0
13:29:10.710173 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [.], ack 6, win 342, options [nop,nop,TS val 616295947 ecr 616294947], length 0
13:29:10.711140 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 616295948 ecr 616293946], length 0
13:29:10.714782 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 616295951 ecr 616294947], length 14
13:29:11.714819 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 15, win 342, options [nop,nop,TS val 616296951 ecr 616295951], length 0
13:29:11.714893 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 616296951 ecr 616295951], length 0
13:29:12.715562 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 616297952 ecr 616296951], length 0
13:29:13.715596 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 616298952 ecr 616297952], length 0
เบกเบฑเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเบฅเบนเบเบเปเบฒเปเบเปเบชเบปเปเบเบเบธเบ SYN เบชเบญเบเบเบฑเปเบ, เปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเปเบชเบปเปเบ SYN / ACK เบชเบญเบเบเบฑเปเบ.
เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเปเบฒเบเบปเบเบเบตเป, เบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบฑเบ deviation, เบเบฑเบเบเบฑเบเบเบฒเบเปเบเบเบขเบฒเบ, เปเบฅเบฐเบเบงเบฒเบกเบเปเบฝเบงเบเปเบญเบ (เบเบฑเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒ). เบเบตเปเปเบกเปเบเปเบฎเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
tc qdisc change dev lo root netem delay 500ms 400ms 50 distribution normal
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเปเบฒเบเบปเบเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเบฅเบฐเบซเบงเปเบฒเบ 100 เปเบฅเบฐ 900 milliseconds, เบเปเบฒเบเบฐเบเบทเบเปเบฅเบทเบญเบเบเบฒเบกเบเบฒเบเปเบเบเบขเบฒเบเบเบปเบเบเบฐเบเบดเปเบฅเบฐเบเบฐเบกเบตเบเบงเบฒเบกเบเปเบฝเบงเบเปเบญเบ 50% เบเบฑเบเบเปเบฒเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเบชเปเบฒเบฅเบฑเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒ.
เปเบเบปเปเบฒเบญเบฒเบเบเบฐเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเปเบฒเปเบเบเปเบฒเบชเบฑเปเบเบเปเบฒเบญเบดเบเบเบตเปเบเปเบญเบเปเบเป เปเบเบตเปเบก, เปเบฅเบฐเบเปเปเบกเบฒ เบเบฒเบเบเปเบฝเบเปเบเบ. เบเบงเบฒเบกเบซเบกเบฒเบเบเบญเบเบเปเบฒเบชเบฑเปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเบฐเปเบเปเบ, เบชเบฐเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเบฐเปเบเบตเปเบกเบงเปเบฒเบกเบตเบซเบผเบฒเบ เปเบเป, เปเบเบดเปเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเปเบญเบปเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒเบญเบญเบ.
เบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ
เบเบญเบเบเบตเปเบฅเบญเบเปเบฎเบฑเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ. เบเบฑเปเบเบเบตเปเปเบซเบฑเบเปเบเปเบเบฒเบเปเบญเบเบฐเบชเบฒเบ, เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบชเบฒเบกเบงเบดเบเบต: เบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบเปเบเบเบชเบธเปเบกเบเบฑเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบฒเบเบขเปเบฒเบ, เบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป Markov เบเบญเบ 2, 3 เบซเบผเบท 4 เบฅเบฑเบเปเบเบทเปเบญเบเบดเบเปเบฅเปเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ, เบซเบผเบทเปเบเปเบเบปเบงเปเบเบ Elliott-Gilbert. เปเบเบเบปเบเบเบงเบฒเบกเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบงเบดเบเบตเบเบฒเบเบเปเบฒเบญเบดเบ (เบเปเบฒเบเบเบตเปเบชเบธเบเปเบฅเบฐเบเบฐเปเบเปเบเบเบตเปเบชเบธเบ), เปเบฅเบฐเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเปเบฝเบงเบเบฑเบเบเบปเบเบญเบทเปเบ
เบเปเปเบซเปเบชเบนเบเปเบชเบ 50% เบเบญเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบ 25%:
tc qdisc add dev lo root netem loss 50% 25%
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ tcpdump เบเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเบฐเปเบเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเปเบเบดเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเบฐเบชเบปเบกเบกเบธเบเบงเปเบฒเบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเปเบเปเบเบดเบ. เปเบฅเบฐเปเบงเบฅเบฒเปเบฅเปเบเบเบตเปเปเบเบตเปเบกเบเบถเปเบเปเบฅเบฐเบเปเปเบซเบกเบฑเปเบเบเบปเบเบเบญเบเบชเบฐเบเบดเบเบเบฐเบเปเบงเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบงเบเบชเบญเบเบเบตเป. client.py (เบชเบฒเบกเบฒเบเบชเปเบฒเปเบฅเบฑเบเปเบเปเบเบฑเบเบเบต, เบซเบผเบทเบเบฒเบเบเบตเปเบ 20 เบงเบดเบเบฒเบเบต), เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเปเบฒเบเบงเบเบเบตเปเปเบเบตเปเบกเบเบถเปเบเบเบญเบเบเบญเบ retransmitted:
[user@host ~]# netstat -s | grep retransmited; sleep 10; netstat -s | grep retransmited
17147 segments retransmited
17185 segments retransmited
เปเบเบตเปเบกเบชเบดเปเบเบฅเบปเบเบเบงเบเปเบชเปเปเบเบฑเบเปเบเบฑเบ
เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบฅเบญเบเบเบงเบฒเบกเปเบชเบเบซเบฒเบเบเบญเบเปเบเบฑเบเปเบเบฑเบ: เบชเบดเปเบเบฅเบปเบเบเบงเบเบเบฐเบเบฒเบเบปเบเบขเบนเปเปเบเบเปเบฒเปเบซเบเปเบเบเบญเบเปเบเบเบชเบธเปเบก. เบกเบฒเบชเปเบฒเบเบเบงเบฒเบกเปเบชเบเบซเบฒเบเปเบเบฑเบเปเบเบฑเบเบเปเบงเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเป 50% เปเบฅเบฐเบเปเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบ:
tc qdisc change dev lo root netem corrupt 50%
เบเบงเบเปเบฎเบปเบฒเปเบฅเปเบเบชเบฐเบเบดเบเบฅเบนเบเบเปเบฒ (เบเปเปเบกเบตเบซเบเบฑเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบขเบนเปเบเบตเปเบเบฑเปเบ, เปเบเปเบกเบฑเบเปเบเปเปเบงเบฅเบฒ 2 เบงเบดเบเบฒเบเบตเปเบเบทเปเบญเปเบซเปเบชเปเบฒเปเบฅเบฑเบ), เปเบเบดเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ:
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:20:54.812434 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [S], seq 2023663770, win 43690, options [mss 65495,sackOK,TS val 1037001049 ecr 0,nop,wscale 7], length 0
10:20:54.812449 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [S.], seq 2104268044, ack 2023663771, win 43690, options [mss 65495,sackOK,TS val 1037001049 ecr 1037001049,nop,wscale 7], length 0
10:20:54.812458 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 1037001049 ecr 1037001049], length 0
10:20:54.812509 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1037001049 ecr 1037001049], length 5
10:20:55.013093 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1037001250 ecr 1037001049], length 5
10:20:55.013122 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [.], ack 6, win 342, options [nop,nop,TS val 1037001250 ecr 1037001250], length 0
10:20:55.014681 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 1037001251 ecr 1037001250], length 14
10:20:55.014745 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 15, win 340, options [nop,nop,TS val 1037001251 ecr 1037001251], length 0
10:20:55.014823 IP 127.0.0.1.43666 > 127.0.0.5.12345: Flags [F.], seq 2023663776, ack 2104268059, win 342, options [nop,nop,TS val 1037001251 ecr 1037001251], length 0
10:20:55.214088 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [P.], seq 1:15, ack 6, win 342, options [nop,unknown-65 0x0a3dcf62eb3d,[bad opt]>
10:20:55.416087 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 1037001653 ecr 1037001251], length 0
10:20:55.416804 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 1037001653 ecr 1037001653], length 0
10:20:55.416818 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 16, win 343, options [nop,nop,TS val 1037001653 ecr 1037001653], length 0
10:20:56.147086 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 1037002384 ecr 1037001653], length 0
10:20:56.147101 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 1037002384 ecr 1037001653], length 0
เบกเบฑเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเบเบฒเบเปเบเบฑเบเปเบเบฑเบเบเบทเบเบชเบปเปเบเบเปเปเบฒเบเบฑเบเปเบฅเบฐเบกเบตเบซเบเบถเปเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบกเบต metadata เบเบตเปเปเบเบเบซเบฑเบ: เบเบปเบงเปเบฅเบทเบญเบ [nop,unknown-65 0x0a3dcf62eb3d,[เบเบปเบงเปเบฅเบทเบญเบเบเบตเปเบเปเปเบเบต]>. เปเบเปเบชเบดเปเบเบเบตเปเบชเปเบฒเบเบฑเบเปเบกเปเบเบงเปเบฒเปเบเบเบตเปเบชเบธเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ - TCP เบฎเบฑเบเบกเบทเบเบฑเบเบงเบฝเบเบเบฒเบเบเบญเบเบกเบฑเบ.
เบเบฒเบเบเปเปเบฒเบเปเบญเบเปเบเบฑเบเปเบเบฑเบ
เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบซเบเบฑเบเปเบเปเบญเบตเบ เบชเบธเบเบเบด? เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบฅเบญเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเปเบญเบเบเบฑเบเบเบญเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ - เบเบฒเบเบเปเปเบฒเบเปเบญเบเปเบเบฑเบเปเบเบฑเบ. เบเปเบฒโเบชเบฑเปเบโเบเบตเปโเบเบฑเบโเปเบเปโเปเบงโเบฅเบฒ 2 เบเบฒเบโเปเบเปโเบเบฝเบโ: เบเบงเบฒเบกโเปเบเบฑเบโเปเบโเปเบเปโเปเบฅเบฐ correlationโ.
tc qdisc change dev lo root netem duplicate 50% 25%
เบเบฒเบเบเปเบฝเบเปเบเบเบเปเบฒเบชเบฑเปเบเบเบญเบเบเบธเบ
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบชเบปเบกเบเบปเบเปเบเบชเบญเบเบงเบดเบเบต.
เปเบเบเบฑเปเบเบเปเบฒเบญเบดเบ, เบเบฒเบเปเบเบฑเบเปเบเบฑเบเบเบทเบเบชเบปเปเบเบเบฑเบเบเบต, เบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบตเปเบกเบตเบเบฒเบเบเบฑเบเบเปเบฒเบเบตเปเบเปเบฒเบเบปเบเปเบงเป. เบเบปเบงเบขเปเบฒเบเบเบฒเบเปเบญเบเบฐเบชเบฒเบ:
tc qdisc change dev lo root netem delay 10ms reorder 25% 50%
เบเปเบงเบเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบเบญเบ 25% (เปเบฅเบฐเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบญเบ 50%) เปเบเบฑเบเปเบเบฑเบเบเบฐเบเบทเบเบชเบปเปเบเบเบฑเบเบเบต, เบชเปเบงเบเบเบตเปเปเบซเบฅเบทเบญเบเบฐเบเบทเบเบชเบปเปเบเบเปเบงเบเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒ 10 เบกเบดเบเบฅเบดเบงเบดเบเบฒเบเบต.
เบงเบดเบเบตเบเบตเบชเบญเบเปเบกเปเบเปเบกเบทเปเบญเบเบธเบเปเบเบฑเบเปเบเบฑเบ Nth เบเบทเบเบชเบปเปเบเบเบฑเบเบเบตเบเบตเปเบกเบตเบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเป (เปเบฅเบฐเบเบงเบฒเบกเบชเปเบฒเบเบฑเบ), เปเบฅเบฐเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบตเปเบกเบตเบเบฒเบเบเบฑเบเบเปเบฒ. เบเบปเบงเบขเปเบฒเบเบเบฒเบเปเบญเบเบฐเบชเบฒเบ:
tc qdisc change dev lo root netem delay 10ms reorder 25% 50% gap 5
เบเบธเบเปเบเบธเบเบเบตเบซเปเบฒเบกเบตเปเบญเบเบฒเบ 25% เบเบตเปเบเบฐเบเบทเบเบชเบปเปเบเปเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฑเบเบเปเบฒ.
เบเบฒเบเบเปเบฝเบเปเบเบเปเบเบเบงเบดเบ
เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบขเบนเปเบเบปเปเบงเบเบธเบเปเบซเปเบเบเบตเปเบเบงเบเปเบเบปเบฒเบญเปเบฒเบเปเบเบดเบ
tc qdisc change dev lo root netem rate 56kbit
เบเบตเบกเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบฒเบเบเปเบฒเบเบเบฒเบเบญเปเบญเบก localhost เปเบเบฑเบเบเบงเบเบเบทเบเบฑเบเบเบฒเบเบเปเบญเบเบญเบดเบเปเบเบตเปเบเบฑเบเบเปเบฒเบเปเบกเปเบเบฑเบก dial-up. เบเบญเบเปเปเบทเบญเปเบเบเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบดเบเปเบฃเบ, เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเบฒเบกเปเบเบเบเปเบฒเบฅเบญเบเบเบญเบเปเบเบฃเปเบเบเปเบเบฑเปเบเปเบเบทเปเบญเบกเบเปเปเปเบเป: เบเบณเบเบปเบเบเปเบฒเบชเปเบงเบเปเบเบตเบเบชเบณเบฅเบฑเบเปเบเบฑเบเปเบเบฑเบ, เบเบฐเปเบฒเบเบเบญเบเปเบเบง เปเบฅเบฐเบชเปเบงเบเปเบเบตเบเบชเบณเบฅเบฑเบเปเบเบฅ. เบเบปเบงเบขเปเบฒเบ, เบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเบฅเบญเบ
tc qdisc change dev lo root netem rate 56kbit 0 48 5
เบเบฒเบเบเบณเบฅเบญเบเบเบฒเบเปเบปเบเปเบงเบฅเบฒเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป
เบเบธเบเบชเปเบฒเบเบฑเบเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเปเบเปเบเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบญเบกเบฎเบฑเบเบเบญเบเปเบงเปเบกเปเบเบเบฒเบเบซเบกเบปเบเปเบงเบฅเบฒ. เบเบตเปเปเบกเปเบเบชเบดเปเบเบชเปเบฒเบเบฑเบเปเบเบฒเบฐเบงเปเบฒเปเบเบฅเบฐเบเบปเบเบเบฒเบเปเบเบเบขเบฒเบ, เปเบกเบทเปเบญเบเบฒเบเบเปเบฅเบดเบเบฒเบเบซเบเบถเปเบเบเบทเบเบเบดเบเปเบเปเบเบฒเบ, เบเบปเบเบญเบทเปเบเบเปเบญเบเบเบฑเบเบเบทเบเปเบเบซเบฒเบเบนเปเบญเบทเปเบเปเบเปเบงเบฅเบฒเบซเบผเบทเบชเบปเปเบเบเบทเบเบเปเปเบเบดเบเบเบฒเบเปเบซเปเบเบฑเบเบฅเบนเบเบเปเบฒ, เปเบฅเบฐเปเบเบเปเบฅเบฐเบเบตเปเบเบเปเปเบเบฒเบก, เบเบงเบเปเบเบปเบฒเบเบฝเบเปเบเปเบงเบฒเบเบชเบฒเบ, เบฅเปเบเปเบฒเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบซเบผเบทเบเบฒเบเปเบเบทเปเบญเบกเบเปเป. เปเบเปเบฎเบฑเบเบเบฒเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ.
เบกเบตเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเบฑเปเบเบเบตเป: เบเบปเบงเบขเปเบฒเบ, เปเบเป mock เบเบตเปเบเปเปเบเบญเบเบชเบฐเบซเบเบญเบ, เบซเบผเบทเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเปเบเบเปเบเป debugger, เปเบญเบปเบฒ breakpoint เบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเบขเบธเบเบเบฐเบเบงเบเบเบฒเบ (เบเบตเปเบญเบฒเบเบเบฐเปเบเบฑเบเบงเบดเบเบตเบเบตเปเบเบดเบเปเบเบทเบญเบเบเบตเปเบชเบธเบ). เปเบเปเบซเบเบถเปเบเบเบตเปเบเบฐเปเบเปเบเบเบตเปเบชเบธเบเปเบกเปเบเบเบญเบเปเบเบงเปเบซเบผเบทเปเบฎเบ. เบกเบฑเบเบเบฐเบเปเบงเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบฅเบทเปเบญเบเบเบตเป
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฒเบเบดเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐ firewall port 12345 เปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ script เบฅเบนเบเบเปเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเปเบฒเบเบชเบฒเบกเบฒเบ firewall เปเบเบฑเบเปเบเบฑเบเบเบฒเบญเบญเบเปเบเบซเบฒเบเบญเบเบเบตเปเบขเบนเปเบเบตเปเบเบนเปเบชเบปเปเบเบซเบผเบทเปเบเบฑเบเปเบเบฑเบเบเบฒเปเบเบปเปเบฒเบขเบนเปเบเบตเปเบเบปเบงเบฎเบฑเบ. เปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเปเบญเบ, เปเบเบฑเบเปเบเบฑเบเบเบตเปเปเบเบปเปเบฒเบกเบฒเบเบฐเบเบทเบ firewalled (เบเบงเบเปเบฎเบปเบฒเปเบเป chain INPUT เปเบฅเบฐเบเบฒเบเปเบฅเบทเบญเบ --dport). เปเบเบฑเบเปเบเบฑเบเบเบฑเปเบเบเปเบฒเบงเบชเบฒเบกเบฒเบเปเบเบฑเบ DROP, เบเบฐเบเบดเปเบชเบเบซเบผเบทเบเบฐเบเบดเปเบชเบเบเบฑเบ TCP flag RST, เบซเบผเบทเบเบฑเบเปเบเบปเปเบฒเบเบฒเบ ICMP เบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบซเบฒเปเบเป (เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบเบถเบเบเบดเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบกเปเบ. icmp-port-unreachable, เปเบฅเบฐเบเบฑเบเบกเบตเปเบญเบเบฒเบเบเบตเปเบเบฐเบชเบปเปเบเบเปเบฒเบเบญเบ icmp-net- unreachable, icmp-proto-เบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเป, icmp-net-เบซเปเบฒเบก ะธ icmp-host-เบซเปเบฒเบก).
เบขเบธเบ
เบเปเบฒเบกเบตเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบกเบต DROP, เปเบเบฑเบเปเบเบฑเบเบเบฐ "เบซเบฒเบเปเบ".
iptables -A INPUT -p tcp --dport 12345 -j DROP
เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบซเบฑเบเบงเปเบฒเบกเบฑเบ freezes เปเบเบเบฑเปเบเบเบญเบเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเปเปเบซเปเปเบเบดเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ:
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
08:28:20.213506 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203046450 ecr 0,nop,wscale 7], length 0
08:28:21.215086 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203047452 ecr 0,nop,wscale 7], length 0
08:28:23.219092 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203049456 ecr 0,nop,wscale 7], length 0
08:28:27.227087 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203053464 ecr 0,nop,wscale 7], length 0
08:28:35.235102 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203061472 ecr 0,nop,wscale 7], length 0
เบกเบฑเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเบฅเบนเบเบเปเบฒเบชเบปเปเบเปเบเบฑเบเปเบเบฑเบ SYN เบเปเบงเบเบเบฒเบเบซเบกเบปเบเปเบงเบฅเบฒเปเบเบตเปเบกเบเบถเปเบ. เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบปเบเปเบซเบฑเบเปเบกเบเปเบกเปเบเบฐเบซเบเบฒเบเบเปเบญเบเบขเบนเปเปเบเบฅเบนเบเบเปเบฒ: เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบงเบดเบเบตเบเบฒเบ settimeout()เปเบเบทเปเบญเบเปเบฒเบเบฑเบเปเบงเบฅเบฒเบเบตเปเบฅเบนเบเบเปเบฒเบเบฐเบเบฐเบเบฒเบเบฒเบกเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเบเบปเบเบฅเบฐเบเบฝเบเบญเบญเบเบเบฑเบเบเบต:
iptables -D INPUT -p tcp --dport 12345 -j DROP
เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบถเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฑเบเปเบปเบเปเบเปเบเปเบญเบกเบเบฑเบ:
iptables -F
เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบเป Docker เปเบฅเบฐเบเปเบฒเบเบเปเบญเบเบเบฒเบ firewall เบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบฒ container, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเบฑเปเบเบเปเปเปเบเบเบตเป:
iptables -I DOCKER-USER -p tcp -d CONTAINER_IP -j DROP
เบเบฐเบเบดเปเบชเบ
เบเบญเบเบเบตเปเปเบซเปเปเบเบตเปเบกเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ, เปเบเปเบเปเบงเบเบเบฒเบเบเบฐเบเบดเปเบชเบ:
iptables -A INPUT -p tcp --dport 12345 -j REJECT
เบฅเบนเบเบเปเบฒเบญเบญเบเบซเบผเบฑเบเบเบฒเบเบงเบดเบเบฒเบเบตเบเบตเปเบกเบตเบเปเปเบเบดเบเบเบฒเบ [Errno 111] เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฐเบเบดเปเบชเบ. เปเบซเปเปเบเบดเปเบเบขเบนเปเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ ICMP:
[user@host ~]# tcpdump -i lo -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
08:45:32.871414 IP 127.0.0.1 > 127.0.0.1: ICMP 127.0.0.1 tcp port 12345 unreachable, length 68
08:45:33.873097 IP 127.0.0.1 > 127.0.0.1: ICMP 127.0.0.1 tcp port 12345 unreachable, length 68
เบกเบฑเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเบฅเบนเบเบเปเบฒเปเบเปเบฎเบฑเบเบชเบญเบเบเบฑเปเบ เบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบญเบเปเบเป เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบดเปเบเบชเบธเบเบฅเบปเบเบเปเบงเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ.
เบเบฐเบเบดเปเบชเบเบเปเบงเบ tcp-reset
เปเบซเปเบเบฐเบเบฒเบเบฒเบกเปเบเบตเปเบกเบเบฒเบเปเบฅเบทเบญเบ --reject-with tcp-reset:
iptables -A INPUT -p tcp --dport 12345 -j REJECT --reject-with tcp-reset
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบฅเบนเบเบเปเบฒเบญเบญเบเบเบฒเบเบเบฑเบเบเบตเบเบตเปเบกเบตเบเปเปเบเบดเบเบเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบฎเปเบญเบเบเปเบเปเบฒเบญเบดเบเปเบเปเบฎเบฑเบเบเบธเบ RST:
[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
09:02:52.766175 IP 127.0.0.1.60658 > 127.0.0.1.12345: Flags [S], seq 1889460883, win 43690, options [mss 65495,sackOK,TS val 1205119003 ecr 0,nop,wscale 7], length 0
09:02:52.766184 IP 127.0.0.1.12345 > 127.0.0.1.60658: Flags [R.], seq 0, ack 1889460884, win 0, length 0
เบเบฐเบเบดเปเบชเบเบเปเบงเบ icmp-host-unreachable
เบกเบฒเบฅเบญเบเปเบเปเบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบเปเบเบทเปเบญเปเบเป REJECT:
iptables -A INPUT -p tcp --dport 12345 -j REJECT --reject-with icmp-host-unreachable
เบฅเบนเบเบเปเบฒเบญเบญเบเบซเบผเบฑเบเบเบฒเบเบงเบดเบเบฒเบเบตเบเบตเปเบกเบตเบเปเปเบเบดเบเบเบฒเบ [Errno 113] เบเปเปเบกเบตเปเบชเบฑเปเบเบเบฒเบเบเบตเปเบเบฐเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบขเบนเปเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ ICMP ICMP เปเบฎเบช 127.0.0.1 เบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเป.
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบฅเบญเบเปเบเปเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฐเบเบดเปเบชเบเบญเบทเปเบเป, เปเบฅเบฐเบเปเบญเบเบเบฐเบชเบธเบกเปเบชเปเบชเบดเปเบเปเบซเบผเบปเปเบฒเบเบตเป :)
เบเบฒเบเบเบณเบฅเบญเบเบเบฒเบเปเบปเบเปเบงเบฅเบฒเบเบฒเบเบฎเปเบญเบเบเป
เบชเบฐเบเบฒเบเบฐเบเบฒเบเบญเบทเปเบเปเบกเปเบเปเบงเบฅเบฒเบเบตเปเบฅเบนเบเบเปเบฒเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เปเบเปเบเปเปเบชเบฒเบกเบฒเบเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเปเบเบซเบฒเบกเบฑเบเปเบเป. เบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเบญเบเปเบเบฑเบเปเบเบฑเบเปเบเบทเปเบญเปเบซเปเบเบฒเบเบเบฑเปเบเบเบญเบเบเปเปเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบฑเบเบเบต? เบเปเบฒเบเปเบฒเบเปเบเบดเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบญเบเบเบฒเบเบชเบทเปเบชเบฒเบเปเบเปเบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเปเบฒเบเบเบฐเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเปเบฒเปเบกเบทเปเบญเบชเปเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป, เบเบฝเบเปเบเปเปเบเปเบเบธเบ SYN เปเบฅเบฐ ACK, เปเบเปเปเบกเบทเปเบญเปเบฅเบเบเปเบฝเบเบเปเปเบกเบนเบ, เบเบธเบเบเปเบฒเบฎเปเบญเบเบเปเบชเบธเบเบเปเบฒเบเบเบฐเบกเบตเบเบธเบ PSH. เบกเบฑเบเบเบดเบเบเบฑเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบ buffering. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเปเบกเบนเบเบเบตเปเปเบเบทเปเบญเบชเปเบฒเบเบเบปเบงเบเบญเบ: เบกเบฑเบเบเบฐเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเบฑเบเปเบเบฑเบเบเบฑเบเบซเบกเบปเบเบเบปเบเปเบงเบฑเปเบเบเบตเปเบกเบตเบเบธเบ PSH. เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฐเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ, เปเบเปเบฅเบนเบเบเปเบฒเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเบปเปเบเบเปเปเบกเบนเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบขเบธเบ
เบชเปเบฒเบฅเบฑเบ DROP เบเปเบฒเบชเบฑเปเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบตเป:
iptables -A INPUT -p tcp --tcp-flags PSH PSH --dport 12345 -j DROP
เปเบเบตเบเบเบปเบงเบฅเบนเบเบเปเบฒเปเบฅเบฐเปเบเบดเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ:
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:02:47.549498 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [S], seq 2166014137, win 43690, options [mss 65495,sackOK,TS val 1208713786 ecr 0,nop,wscale 7], length 0
10:02:47.549510 IP 127.0.0.1.12345 > 127.0.0.1.49594: Flags [S.], seq 2341799088, ack 2166014138, win 43690, options [mss 65495,sackOK,TS val 1208713786 ecr 1208713786,nop,wscale 7], length 0
10:02:47.549520 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 1208713786 ecr 1208713786], length 0
10:02:47.549568 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208713786 ecr 1208713786], length 5
10:02:47.750084 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208713987 ecr 1208713786], length 5
10:02:47.951088 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208714188 ecr 1208713786], length 5
10:02:48.354089 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208714591 ecr 1208713786], length 5
เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบเปเบฅเบฐเบฅเบนเบเบเปเบฒเบเปเปเบชเบฒเบกเบฒเบเบชเบปเปเบเบเปเปเบกเบนเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบเบฐเบเบดเปเบชเบ
เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบถเบเบเบดเบเปเบฒเบเบฐเบเบทเบเบฑเบ: เบฅเบนเบเบเปเบฒเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเปเบเป, เปเบเปเบเบฐเปเบเปเบฎเบฑเบ ICMP 127.0.0.1 tcp port 12345 เบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเป เปเบฅเบฐโเปเบเบตเปเบกโเปเบงโเบฅเบฒโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเบชเบปเปเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเปเบเบทเปเบญโเบฅเบฐโเบเปเบฒเบงโ. เบเปเบฒเบชเบฑเปเบเปเบเบดเปเบเบเบทเบเบฑเปเบเบเบตเป:
iptables -A INPUT -p tcp --tcp-flags PSH PSH --dport 12345 -j REJECT
เบเบฐเบเบดเปเบชเบเบเปเบงเบ tcp-reset
เบเปเบฒเบชเบฑเปเบเปเบเบดเปเบเบเบทเบเบฑเปเบเบเบตเป:
iptables -A INPUT -p tcp --tcp-flags PSH PSH --dport 12345 -j REJECT --reject-with tcp-reset
เบเบงเบเปเบฎเบปเบฒเบฎเบนเปเปเบฅเปเบงเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเปเบเป --reject-with tcp-reset เบฅเบนเบเบเปเบฒเบเบฐเปเบเปเบฎเบฑเบเปเบเบฑเบเปเบเบฑเบ RST เปเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบ, เบเบฑเปเบเบเบฑเปเบเบเบถเบเบเบดเบเปเบฒเบชเบฒเบกเบฒเบเบเบฒเบเบเบฐเปเบเปเบเป: เบเบฒเบเปเบเปเบฎเบฑเบเบเบญเบ RST เปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเปเบเบปเปเบฒเบชเบฝเบเบเบทเบเบเบดเบเปเบเบเบเปเปเบเบฒเบเบเบดเบเปเบเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบฅเบนเบเบเปเบฒเบเบงเบเปเบเปเบฎเบฑเบ. เบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเบเบทเบโเบเบฑเปเบโเบเบทเบโเปเบซเบกเปโเปเบเบโเบซเบกเบนเปโเปเบเบทเปเบญเบโ. เปเบซเปเบเปเบฒเปเบเบตเบเบเบฒเบ script เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบตเป. เปเบฅเบฐเบเบตเปเบเบทเบเบฒเบเบชเบฑเบเบเบญเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบท:
เบเบตเปเปเบซเบเบทเปเบญเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ
[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:22:14.186269 IP 127.0.0.1.52536 > 127.0.0.1.12345: Flags [S], seq 2615137531, win 43690, options [mss 65495,sackOK,TS val 1209880423 ecr 0,nop,wscale 7], length 0
10:22:14.186284 IP 127.0.0.1.12345 > 127.0.0.1.52536: Flags [S.], seq 3999904809, ack 2615137532, win 43690, options [mss 65495,sackOK,TS val 1209880423 ecr 1209880423,nop,wscale 7], length 0
10:22:14.186293 IP 127.0.0.1.52536 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 1209880423 ecr 1209880423], length 0
10:22:14.186338 IP 127.0.0.1.52536 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1209880423 ecr 1209880423], length 5
10:22:14.186344 IP 127.0.0.1.12345 > 127.0.0.1.52536: Flags [R], seq 3999904810, win 0, length 0
เบเบฐเบเบดเปเบชเบเบเปเบงเบ icmp-host-unreachable
เบเปเบญเบเบเบดเบเบงเปเบฒเบกเบฑเบเปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเบเบฑเบเบเบธเบเบเบปเบเบงเปเบฒเบเปเบฒเบชเบฑเปเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบงเปเบ :) เบเบถเบเบเบดเบเปเบฒเบเบญเบเบฅเบนเบเบเปเบฒเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบฐเปเบเบเบเปเบฒเบเบเบฒเบเบเบฒเบเบเบฐเบเบดเปเบชเบเปเบเบเบเปเบฒเบเป: เบฅเบนเบเบเปเบฒเบเบฐเบเปเปเปเบเบตเปเบกเปเบฅเบเบฐเปเบงเบฅเบฒเบฅเบฐเบซเบงเปเบฒเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบเบฐเบชเบปเปเบเปเบเบฑเบเปเบเบฑเบเบเบทเบเปเบซเบกเป.
[user@host ~]# tcpdump -i lo -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:29:56.149202 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.349107 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.549117 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.750125 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.951130 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:57.152107 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:57.353115 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
เบชเบฐเบซเบฅเบธเบ
เบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฐเบเบฝเบเปเบเบเบเปเบฒเบฅเบญเบเปเบเบทเปเบญเบเบปเบเบชเบญเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบฑเบเบฅเบนเบเบเปเบฒเบซเบผเบทเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบซเปเบญเบ; เบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเปเบเปเบญเบธเบเบฐเบเบญเบเบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเบเบปเบเปเบ Linux.
เบเบปเบเบเบฐเปเบซเบเบเบเบตเปเบชเบปเบเบเบฐเบเบฒเปเบเบเบปเบเบเบงเบฒเบกเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบซเบผเบฒเบเบเปเบงเบฒเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบกเบตเบเบฒเบเบเบฒเบเปเบฅเบทเบญเบเบเบญเบเบเปเบฒเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเบงเบเบกเบฑเบ. เบชเปเบงเบเบเบธเบเบเบปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบชเบฐเปเบซเบกเบตเบกเบตเบเบฝเบเบเปเบเบญเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเบเปเบฝเบงเบเบฑเบ (เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบซเบเปเบญเบ). เบเปเบฒเบเปเบฒเบเปเบเปเบชเบดเปเบเบญเปเบฒเบเบงเบเบเบงเบฒเบกเบชเบฐเบเบงเบเปเบซเบผเบปเปเบฒเบเบตเปเบซเบผเบทเบเปเบฒเบเบเบทเบเบฑเบเปเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเบเปเบฅเบดเบชเบฑเบเบเบญเบเบเปเบฒเบ, เบเบฐเบฅเบธเบเบฒเบเบฝเบเบงเปเบฒเปเบเบงเปเบ. เบเปเบฒเบเปเป, เบเปเบญเบเบซเบงเบฑเบเบงเปเบฒเบเบญเบเปเบงเบเบญเบเปเบเบปเปเบฒเบเบฐเบเบตเบเบถเปเบเบเปเบฒเบเปเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบปเบเบชเบญเบเบกเบฑเบเปเบเปเบเบทเปเบญเบเปเบเบเบญเบเบเบฑเบเบซเบฒเปเบเบทเบญเบเปเบฒเบเปเบเบเปเบเปเบงเบดเบเบตเบเบฒเบเปเบเบฐเบเปเบฒ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com