Linux12-TCP\HTTP

一、TCP粘包问题

1.TCP在接受数据时,多包数据粘在一起

2.原因:

2.1TCP发送数据时,会根据缓冲区数据的情况进行重新组包

2.2TCP接收方,没有及时读走缓冲区数据,导致缓冲区大量数据缓存。

3.如何解决

3.1发指定大小字节

将要发数据,封装在结构体里

struct data

{

int id;

float tmp;

xxx

};

缺点:发送端与接收端体系不同,32位与64位对齐方式的不同造成数据丢失;所有要在指定的相同平台使用,注意结构体对齐问题。

3.2发送具有指定分隔符的数据

hello world\n

miss you\n

3.3封装自定义数据帧

AA len0C 0001 0112 1314 1504 XXXX XXXXBB

校验:8位和校验

16位和校验

二、网络抓包

抓取通过设备网卡的数据

wireshark:网络抓包工具

1.分析和追踪网络问题

2.查看网络协议栈

安装:sudo apt-get install wireshark

1.sudo wireshark

2.选择通信设备的网卡==》any

3.选择抓取的过滤条件

4.开始抓取

5.进行一次通信

三.TCP报文头

标志位:紧急指针标志,为I时表示紧急指针有效,该报文应该优先传送,

  1. URG:

确认应答标志

2 ACK:

表示发送数据,提示接收端从TCP接收缓冲区中读走数据,为接收后续数据腾出空间

3.PSH:

  1. RST:重置连接标志

表示请求建立一个连接5.SYN:

fmish标志,表示释放连接6.FN

四、TCP机制

1.应答机制:为每个数据增加序列发,发送数据时,第一个数据的序号作为报文中的序号。接收方收到相关数据,会回应ACK报文,报文中的确认号是接收方下次希望接收到的数据的起始序号

2.超时重传机制:TCP发送数据后会在一定的时间内等待ACK,假设在指定时间ACK未收到,则视为此数据包丢失,

五、HTTP(应用层)

超文本传输协议

1.世界范围内的广域网--万维网WWW

万维网服务器如何标记万维网文档?---------------->url:统一资源定位符

万维网客户端和万维网服务器如何通信?---------->http:超文本传输协议

万维网客户端如何显示数据?------------------------->HTML:超文本标记语言

URL:

<协议>://<主机>:<端口>/<路径>

/*创作中心-CSDNhttps://mpbeta.csdn.net/mp_blog/creation/editor?spm=1001.2014.3001.4503*/

应用层:

HTTP协议:浏览器与服务器之间的通信标准

端口号:80

传输层:tcp协议

  1. HTTP工作流程
  1. 请求TCP连接

  2. 发送http请求报文

  3. 接收http响应报文

  4. 关闭连接

爬虫

2.HTTP报文格式:

Connection: keep-alive

http的(tcp)连接方式

keep-alive:长连接,服务器不会立马断开,会等待一段时间断开

close:短连接,服务器在发送完数据之后立马断开

相关推荐
Me4神秘9 小时前
电信、移动、联通、广电跨运营商网速慢原因
网络
数通Dinner10 小时前
RSTP 拓扑收敛机制
网络·网络协议·tcp/ip·算法·信息与通信
liulilittle12 小时前
SNIProxy 轻量级匿名CDN代理架构与实现
开发语言·网络·c++·网关·架构·cdn·通信
tan77º12 小时前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
小白爱电脑13 小时前
光纤的最小弯曲半径是多少?
网络
花落已飘14 小时前
多线程 vs 异步
linux·网络·系统架构
qq_1715388517 小时前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
网络·网络协议·tcp/ip
珹洺17 小时前
计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP
网络·tcp/ip·计算机网络
兮动人17 小时前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
怦然星动_18 小时前
eNSP中实现vlan间路由通信(路由器)
网络·智能路由器