这一部分主要是介绍了URI和URL的概念、介绍了OSI七层模型、TCP/IP四层模型,讲了如何理解这些模型。重点讲了TCP协议的三次握手和四次挥手过程,捎带讲解了一些TCP报文的内容
URI(uniform resource identifier--统一资源标识符)
表示定位到互联网上的某个资源,含义更加宽泛(文件服务器、邮件地址等),而URL是URI的一种更具体的形式,即表示某个网页资源
URI的结构:
协议:http/ftp/ldap/mailto
登录信息:用户名和密码,例如user:pass。一般不这样使用(不安全)
服务器地址
端口号:一般默认端口号(80)
带层次的文件路径
查询字符串
片段标识符(hash):RFC并没有明确规定其使用,例如锚点
问题:
Q: 什么是OSI七层模型
A: OSI规定的建立网络传输需要的通信结构,OSI七层模型:物理层->数据链路层->网络层->传输层->会话层->表示层->应用层,实际应用并没有采用这种形式,问题在于某一层的功能在另外一层有重叠(表示层、会话层没有具体的实现来表示,其核心功能更多的在传输层和应用层体现出来)
Q:什么是TCP/IP四层模型
A:见下例
Q:应用层和传输层有哪些协议
A:见正文
Q:如何理解TCP/IP四层模型
根据发信、收信过程来理解这四层模型中每一层的职责所在
例子:
两个人写信:A B
分层是为了明确角色职责,只需要关注数据内容,通信双方的交流前提是应用层,而不关注其它层的功能
1对应的是应用层(负责数据内容,内容本身有一定规则),例如http请求本身,就有一套规则
2对应的是传输层(端到端的可靠性,确定内容可以按照正确顺序抵达对方、为数据添加一些其它内容,例如端口号信息(哪个应用))
3对应的是网络层(单一网络上传输数据包,给数据加上ip(协议)地址,即解决数据发给谁的问题)
4对应的物理链路层(负责真正的数据传递过程,底层硬件的运行逻辑)
每个应用层协议一般都会使用传输层的TCP和UDP协议:
运行在TCP协议上的协议有:
- HTTP(80)主要用于普通浏览
- HTTPS(443)HTTP协议的安全版本
- FTP(20、21)文件传输
- POP3(110)收邮件
- SMTP(25)发送电子邮件
- SSH(22)加密安全登录
运行在UDP协议上的协议有:
- DHCP(67)动态主机配置协议,动态配置IP地址
其它
- DNS 完成地址查找,邮件转发等工作(TCP、UDP协议之上)
- SNMP(Simple network management protocol)网络信息收集、网络管理
- ARP(Address resolution protocol 地址解析协议)动态解析以太网硬件的地址
问题(答案就是正文内容):
定义:TCP(transmission control protocol)是面向连接的、可靠的、基于字节流的传输层通信协议。与之对应的UDP(user datagram protocol)是不可靠(只管发,不管接)的
例子:
A和B用对讲机交流(对讲机、说话的时候对方听不到)
实际情况
客户端A->服务器B
SYN表示询问、ACK表示回答,即第一次A询问,第二次B回答并且询问,第三次A回答,每次发送的都是一个TCP报文,而这些信号都在报文中(ACK对应的ack要对应SYN的seq)。ACK和SYN的值只有(0,1),1表示此状态有效,0表示无效
为什么要四步?
服务端的listen状态下的socket当收到客户端建立连接请求的SYN报文后,它可以把SYN和ACK放在一个报文中发过去,但是关闭连接时,当服务器收到客户端的FIN报文通知,服务器只能发一个回应报文,然后通知应用程序,应用程序完成发送全部数据并可以确定终止,服务器才能发送FIN告诉客户端可以真正断开连接了,所以这一步需要分两步发送报文
原文:https://www.cnblogs.com/mouseGo/p/14291783.html