首先,我自己梳理一下,其实除了应对以后的笔试,还有需要应对的是自己在编程中对于api的选择,我在满足需求时采取哪种方案更好。
首先,我需要了解的是tcp/ip是一个协议组,有三大层:
ip 对应于网络层
tcp 和 udp 对应于传输层
http 对应于应用层
socket 属于api ,是对tcp/ip的封装。
其中,应用层存在的意义是使tcp/ip传输过来的数据内容能够识别出来。
通过socket 我们才能使用tcp/ip协议
CSDN上有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
(从百度摘录)
问题1:tcp 有哪三次握手?然后结束时需要握手不?
第一次:客户端向服务的发送SYN包,等待服务端确认;
第二次:服务端收到客户端的SYN包,确认客户端的syn(ack=j+1),向客户端发送确认包ACK(ack=k),即syn+ack包,发送完毕后,服务端进入SYN_RECV状态
第三次:客户端收到服务端的syn+ack包,向服务端发送确认包ack(ack=k+1),发送完毕后,双方进入establish状态,完成三次握手。
问题2:利用socket建立的网络连接步骤
socket 链接至少需要一套套接字,其中客户端的是client socket ,服务端的是server socket 。
套接字之间连接过程,三个步骤:服务器监听,客户端请求,连接确认。
1.服务器监听:服务端套接字处于等待连接状态,实时监控网络,等待客户端发送请求。
2.客户端请求:客户端套接字提出请求,要连接服务端的套接字。客户端套接字需要指出服务端套接字的ip和端口,向服务端发出请求。
3.连接确认:当服务端套接字接收到客户端套接字,响应客户端套接字的要求,建立一个线程,把服务端套接字的描述发送给客户端。一旦客户端确认此描述,双方建立连接。
问题3:http链接的特点
http 是超文本传输协议,最显著特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,主动释放连接。
问题4:tcp和udp的区别?
tcp是面向链接,三次握手是为了保持连接性。
udp是非面相链接,就是发送时不需要和对方建立连接,也不需要理会对方是否接收。
udp发送的数据内容,用户是可以进行验证的。