1、OSI七层,TCP/UDP,telent属于哪一层:
(1)OSI七层:
应用层(文件传输) | Telent,HTTP,FTP,NFS,SMTP,SNMP,DNS,TFTP |
表示层(数据格式,代码转换,数据加密没有协议) | |
会话层(接触或建立与别的接点的联系,没有协议) | |
传输层 | TCP,UDP,SPX(提供端到端的接口) |
网络层(为数据包选择路由) | IP,IPX,ICMP,RIP,OSPF,BGP,IGMP |
数据链路层(传输有地址的帧错误检测功能) | ATM,FDDI/SLIP,CSLIP,PPP,ARP,RAPP,MTU |
物理层(以二进制数据形式在物理层媒体上传输数据) | RJ45.802.3,ISO2110,IEEE802 |
应用层 | |
传输层 | 四层交换机,也有工作在四层的路由器 |
网络层 | 路由器,三层交换机 |
数据链路层 | 网桥,以太网交换机(二层交换机),网卡 |
物理层 | 中继层,集线层,还有双绞线 |
(3)TCP/UDP协议
TCP:它是事先为所发送的数据开辟出连接好的通道,然后进行数据发送
UDP:不为IP提供可靠性,流控或差错恢复功能
TCP支持协议:telent,FTP,SMTP
UDP支持协议:NFS(网络文件系统),SNMP(简单网络管理系统协议),DNS(主域名称系统),TFTP(通用文件传输协议)
2、TCP的连接和断开的过程:
(1)连接(三次握手)
第一次握手:Client将标志位SYN置为1,随机产生一个值Seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server.
第二次握手:Server收到数据包后由标志位SYN=1,知道Client请求建立连接,将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值Seq=k,并将该数据包发送给Client确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则建立成功,Client和Server进图ESTABLISHED状态。
完成三次握手后,随后进入Client与Server之间可以开始传输数据。
(2)TCP断开连接(四次挥手)
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK到Server,确认序号为收到的+1,Server进入CLOSED状态,完成四次挥手。
3、TCP如何进行流量控制?
所谓流量控制就是让这发送速率不要过快,让接收方来得及接收。利用滑动窗口机制就可以实施流量控制。
原理:运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方的窗口大小。
考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送窗口大小的报文,此时发送将发送窗口置为0,停止发送数据。之后接收方由足够的缓存,发送了非窗口大小的报文,但是这个报文中途丢失的,那么发送方的发送窗口就一直为0,导致锁死。
解决问题:TCP为每一个连接设置一个持续计时器。只要TCP一方收到对方0窗口通知,就启动该计时器。周期性的发送一个窗口探测报文段。对方就在确认这个报文的时候出现的窗口大小(TCP规定,即使设置为0窗口,也必须接收以下几种报文段:0窗口探测报文段,确认报文段和携带紧急数据报文段)。