一个函数模板,把相同参数,相同返回值的函数封装成一个模板类
将四字节的网络地址转换成点分十进制的字符串形式IP地址
这个函数的返回值存储在静态区,会造成线程安全的问题。
TCP所谓的创建链接:
服务器要和客户端创建一种数据结构,其中是要花费时间和空间的,所以人们一直说UDP效率比TCP高。双方为了维护链接,是有成本的。
CS模型:客户端主动发送请求,服务器被动接受请求。
在TCP中,客户端建立链接所采用的方式叫做三次握手。
TCP客户端给服务器发送一个数据报,这个报里面有一个标志为叫SYN,SYN如果被设置,那么说明它是一个服务器链接请求。
TCP:全双工,字节流,建立链接
全双工:客户端和服务器可以相互同时发消息,人在吵架的时候是全双工
管道是半双工,单向通信,人在正常礼貌交流是半双工
四次挥手断开链接
connect是触发链接,主动发起SYN
http底层是tcp
sock套接字文件描述符里有个private成员指向底层的sock
里面有recvqueue sendqueue用来读取和发送数据
同样socket里也有file*指针指回去
HTTP
最典型的序列化和反序列化工具:JSON和XML
一个进程在系统一共有两个栈,一个叫用户栈,一个叫内核栈
寄存器中有一个指针,当你是用户态的时候就指向内核栈,当你是内核态的时候就指向内核栈。
抓包命令,只抓从ETH0上来的数据
ANY表示只要发送到这台主机的,都抓。
只抓8080端口的,只抓TCP的
+n选项,第一个n表示主机显示成数字的,再加n表示把能显示成数字的都显示成数字。
三次握手抓包现象
四次挥手断开链接现象,服务器先请求断开,F=FIN,P = 数据传输
protocol.hpp就是协议,用结构体做约定
这个实验,序列化和反序列化在哪儿?
发过去的是一个结构化的数据
给服务器发过去一个rq,从服务器收回来一个rsp
不推荐直接结构体做协议封装
因为实际情况双方主机不同,结构体内存对齐不同,地址长度不同等。
http属于应用层,不属于内核。–超文本传输协议。
端口号,https是加密的
协议名/域名/路径
查询字符就是类似百度这种,你的查找字段再这个里面
片段标识符只指有很多图片的网站,下翻的时候片段标识符会变