粘包问题:
原因:TCP流式套接字;数据与数据之间没有边界;导致可能多次的数据粘到一起。
解决办法:
- 规定一些数据与数据之间的间隔符,如:"\aa\", "\r\n"。
- 指定要发送的数据长度。
- 自己将数据打包。
TCP的连接建立:
1.用三次握手建立TCP连接:
2.TCP的连续释放(四次挥手)
TCP报文段的首部格式:
一个TCP报文段分为首部和数据两部分,但TCP的全部功能都体现在其首部各字段的作用。
TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N是整数))。因此TCP首部的最小长度是20字节。(详细内容参考《计算机网络》第205页。
常用网络测试工具:
- ifconfig:查看主机上网卡网络信息;
- ping:测试两台主机之间是否连通;
- telent:远程登陆工具;
- ssh:硬件(开发板)
- netstat:查看当前主机上,活动的网络进程相关状态信息;
- arp:address resolution protocol;
抓包工具(tcpdump):
tcp.port == 50000 && tcp.ip == 192.168.0.183
el ----> wireshark(抓包/监听)
wireshark(可视化界面)
过滤规则:
(1)根据IP地址过滤:ip.src == x.x.x.x ip.dst == x.x.x.x
(2)根据端口过滤: tcp.srcport == xx; tcp.dstport == xx;
udp.srcport == xx; udp.dstport == xx;
(3)根据协议类型过滤:tcp; udp; icmp...........telnet;
(4)任意组合以上条件抓包:tcp; udp; icmp...........telnet;
1)与(and):ip.src == 192.168.1.100 and tcp.dstport == 9999
2)或(or):ip.src == 192.168.1.100 or ip.dst == 192.168.1.102
tcp host 192.168.1.100