- 二台服务器要通信,需要考虑哪些指标?如效率、可靠性等,如何设计这么个可靠的协议
- 怎么判断系统是32位还是64位,系统下的数据类型的大小是否固定
linux下输入uname -m或者arch,显示包含X86_64就是64位操作系统,i686就是32位操作系统。或者点开操作系统的设置来查看。位数表示计算机虚拟内存大小,62位操作系统的虚拟内存大小是2^64。不固定,例如指针变量,32位操作系统下是4字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节),64位操作系统下是8字节。char,int,float,double都一样,都是1,4,4,8字节,long在32位是4字节,long在64位是8字节。 - TCP协议和IP协议的区别
1)IP协议位于网络层;TCP协议位于传输层;传输层在网络层之上,传输层数据靠网络层承载,所以TCP协议是作为数据包装在IP协议当中。
2)协议头部内容不同,IP协议/TCP协议头部均是20字节,但是内容不同。
TCP协议首部主要包含的内容:16位源端口号;16位目的端口号;
32位序列号:每一个字节都按顺序编号表示本报文所发送数据的第一个字节的序号;
32位确认序列号:确认号-1-序列号=传送数据的大小;
数据偏移占4位:因为有选项填充在数据前面,所以需要标识数据起始位置;
保留位6位
控制位6位:URG标识传输了紧急数据,ACK表示确认接收到报文,PSH表示希望立即收到响应报文,SYN表示建立连接,RST,表示立即断开连接,此时可能服务器崩溃了,FIN表示正常的单方面断开连接,表示不再发送数据,但是可以接收数据;SYN=1,ACK=0表示建立连接;ACK=1表示确认建立连接,连接建立完SYN=0,SYN只有在建立连接时才置1。
16位窗口大小:表示当前能够接收的最大数据量,以字节为单位;
16位校验和:伪首部+首部+数据;
16位紧急指针:紧急数据放在普通数据的前面,该指针指向紧急数据的末尾,这样才能区分两种不同等级的数据。
选项
IP协议首部主要包含的内容:版本号:有ipv4和ipv6两种;
首部长度:一般为5,单位是32位(4字节);
总长度:16位,单位是字节,2^16=65536字节;数据链路层规定能够传输的最大数据帧的长度MTU=1500字节,当IP数据报封装成数据帧的长度超过1500字节时,需要进行分片,在接收端需要将分片的数据组装在一起,这时就需要一个标识来标志哪些片属于同一ip数据报。
标识:占16位,用来标示哪些片属于同一ip报文,表示最多有2^16种不同ip数据报。
标志:MF标志位,MF=1表示后面还有分片,MF=0表示这是最后一个分片。DF=1不允许分片,DF=0表示允许分片。
片偏移:表示当前分片中的数据在原IP报文的数据中的相对位置,以8字节为单位,所以分片都是8字节的整数倍;
生存期:TTL表示数据在网络中的寿命,可以用跳数表示,每经过一个路由器,TTL-1,减到0就丢弃这个数据报,防止无用数据报占用网络资源;
协议:表示ip数据报所携带的数据使用的是哪种协议;
ICMP IP TCP UDP IPV6 OSPF ... 1 4 6 17 41 89 首部校验和:只校验IP报文的首部,采用CRC校验;
源IP地址4字节;
目的IP地址4字节。
3)TCP是面向连接的,需要建立三次握手与四次挥手;IP不建立连接。
我感觉我能说的就这些了。
- HTTP协议,get和post的区别。
1)get是从服务器获取资源;post是向服务器上传资源,会更改服务器存储的内容,get不会。
2)get使用明文传递,post可使用明文也可以使用密文传递;
3)get位于http包头,post位于http正文;
4)get - 在用post的时候,http请求是明文的,会不会存在什么安全性问题,被破解啊什么的。
- 简述TCP/IP五层模型
- 传输层和网络层的协议有哪些,之间的区别
传输层有TCP/UDP协议;
网络层有IP协议。 - 输入网址到输出内容经历的过程
- 怎么判断一个IPv4是否合法?
- http和https的区别?https实现过程?
http是 - https在性能上有损失吗?在时间上会变慢吗?
- 长链接了解吗?长链接和短链接的区别,在什么情况下用长链接、短链接?(keep-alive)
- 对http协议的了解,把你知道的状态码说一下
- HTTPS讲一下,描述一下从客户端发送http请求到服务器端这个过程。
- tcp和udp区别,讲讲TCP报头字段。tcp拥塞控制算法
- listen 第二个参数怎么设置的。(我先从 2.2版本以前的 backlog 与 2.2 以后的区别,扯到 syncookie,感觉面试官挺满意的。)
- 四次挥手,越详细越好。大量的 CLOSE_WAIT 会怎么样?
CLOSING 状态。
osi七层结构
输入一个url,然后的一系列动作,要把各个层说出来,怎么交互的