tcp的特点
面向字节流特点,会造成可能数据与数据发送到一块,成为粘包,数据之间不区分
拆包
因为缓冲区的大小,一次性发送的数据会进行拆分(大小不符合的时候)
就和水一样一次拆一次沾到一块,不好对数据进行拆分
字节流就是像水一样,一个接着一个往过流,字节流,紧挨着,
多次发的东西一次性接受
在底层下面,socket 会在发送数据会等一下,时间到了就一次性发送
粘包问题:
原因:
tcp流式套接字
数据与数据之间没有边界感
导致,可能多次的数据粘到一起
解决:
1.规定一些数据与数据之间的间隔符
“/aa” “/r/n”
2.可以指定要发送的数据的长度
3.自己将数据包打包
struct msg
{ int size;
char data[100];
};
struct msg data = {5, “1.txt”};
recv(read)
send(write)
wireshark
抓包工具 --- 抓取网络上数据
telnet 应用层协议
传输层 tcp
网络层 ip
数据链路层
物理层
ubuntu开启telnet服务
sudo apt-get install openbsd-inetd
sudo apt-get install telnetd
sudo /etc/init.d/openbsd-inetd restart
注意:
安装之前,确保ubuntu能上网
ping www.baidu.com
# 查看 telnet服务是否开启
sudo netstat -a | grep telnet
wireshark过滤使用
过滤规则:
1、根据ip地址过滤
ip.srC = x.X.X.X
ip.dst =- x.x.x.x
根据端口过滤:tcp.srcportXX;二
tcp.dstportXX;二三
udp.srcportZ-XX;
udp.dstportXX:
根据协议类型过滤:
tcp udp icmptelnet
任意组合以上条件抓包:
如果与的关系:and
ip.src == 192.168.1.100 and tcp.dstport == 9999
如果或关系:Or
ip.src == 192.168.1.100 or ip.dst == 192.168.1.102
tcp host 192.168.1.100