基础概念
通信
人与人之间或者人与自然之间通过某种行为或媒介进行的信息交流与传递,从广义上指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法,任意媒质,将信息从某方准确安全地传送到另一方
网络
是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享
网络通信
通过网络将各种孤立的通信设备进行连接并实现人与人、人与计算机、计算机与计算机信息交换
通信协议
计算机在网络中实现通信必须要遵守的约定。主要是对信息传输的速率、代码结构、传输代码、传输控制步骤、出错控制等作出规定和制定标准。常见的通信协议:TCP/IP协议、IPX/SPX协议、NetBEUI协议等
分层体系
OSI七层体系(Open System Interconnection 开放式系统互联参考模型)、TCP/IP五层体系(传输控制协议/因特网互联协议Transmission Control Protocol/Internet Protocol)
计算机网络
计算机网络是按照网络协议,将地球上分散的、独立的计算机相互连接的集合。连接介质可以是电缆、双绞线、光纤、微波、载波或通信卫星。计算机网络具有共享硬件、软件和数据资源的功能,具有对共享数据资源集中处理及管理和维护的能力。通常被分为:局域网(LAN)、城域网(MAN)、广域网(WAN)
互联网
互联网又称国际网络,或音译因特网(Internet)、英特网。互联网始于1969年美国的阿帕网。是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。Internet上的计算机使用的是TCP/IP协议
TCP、UDP协议
TCP:传输控制协议(Transmission Control Protocol),是面向连接的,即传输数据前,在发送和接收端通过三次握手建立连接,然后再传输数据,传输完成后通过四次挥手关闭连接,保证传输数据的可靠性,基于字节流的传输层通信协议。可用于下载文件、浏览网页等。
UDP:用户数据报送协议(User Datagram Protocol),是面向无连接的,即传输数据不需要建立连接,不论接收方是否启动,直接将数据包发送,因为无连接,所以传输速度快、但容易丢失数据,是不可靠的,面向报文(消息)的传输层通信协议。可用于视频会议、直播等。
TCP与UDP区别
TCP是面向连接的,UDP是无连接的
TCP是可靠的,UDP是不可靠的
TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多通信的
TCP是面向字节流的,UDP是面向报文(消息)的
TCP是有拥塞控制机制的,UDP没有拥塞控制,适合媒体通信
TCP首部20字节,UDP首部8字节
TCP三次握手
TCP四次挥手
为何TCP 连接需要三次握手,两次不可以么,为什么?
为了防止已失效的连接请求报文突然又传送到了服务端,因而产生错误
场景:客户端发出的连接请求报文并未丢失,而是在某个网络节点滞留,导致连接已失效后才到达服务端
若不采用三次握手,只要Server发送确认数据包,连接建立,但此时客户端认为连接已失效,并不会与Server通信,Server一致等待Client的请求,浪费了Server一定资源。
若采用三次握手,Server发送确认数据包后,未收到来自Client的确认,不会建立连接
TCP保证数据传输的具体细节?
- Ack号=Seq 号 + 传递的字节数 + 1
- TCP客户端传输数据丢失或失败时,Client未收到Server相关数据包确认,超时后Client重新发送,如数据包M1发送成功并收到ServerM1确认,数据包M2发送失败,M3、M4发送成功,Server会返回重复M1确认,此时客户端需重新发送M2
什么是 TCP 滑动窗口?
TODO
从输入URL地址到显示网页经历了哪些过程,使用了哪些协议?
使用到的协议:
DNS:域名与IP映射
HTTP(应用层):HTTP请求头与响应体返回网页资源,需要依靠TCP/IP
TCP(传输层):与服务器建立连接并传输数据
IP(网络层):需要IP来寻址(IP通过ARP协议获取物理MAC地址)
HTTP
HTTP(超文本传输协议),简单快速、数据格式灵活、无连接、无状态、支持B/S、C/S
HTTP协议请求报文格式
HTTP请求及状态码
GET、POST、PUT、HEAD、DELETE、TRACE、OPTIONS、CONNECT等
1xx:请求处理中
2xx:请求成功处理
-
3xx:请求重定向
301:MOVED Permanently:永久重定向
302:FOUND:临时重定向
-
4xx:客户端错误,请求不合法
400:Bad Request:请求语法错误
401:Unauthorized:未经授权
403:Forbidden:拒绝提供服务
404:Not Found:资源不存在
-
5xx:服务端错误
500:Internal Server Error:服务端执行请求发生错误,可能是WEB应用Bug或者临时故障
503:Server Unavailable:服务暂时处于超负载或者正在停机维护,无法处理请求
HTTP1.0与HTTP1.1区别?
- 长连接:1.0默认短连接,1.1起默认使用长连接,Connection:keep-alive,长连接有非流水线方式(客户端同步阻塞发送请求)和流水线(pipelining)方式(客户端异步非阻塞发送请求)
- 错误状态响应码:1.1新增24个错误状态响应码
- 缓存处理:1.0单一缓存判断标准,1.1引入更多的缓存控制策略
- 带宽优化及网络连接的使用:HTTP1.0不支持断点续传功能,存在一些浪费带宽的现象。HTTP1.1加入了断点续传的支持,允许只请求资源的某个部分,充分利用带宽和连接,避免浪费带宽
Cookie与Seesion
HTTP是无状态协议,通过CookieSeesion来控制请求的状态
Cookie在客户端,由请求返回Set-Cookie通知客户端保存Cookie,后续请求添加Cookie;Seesion由服务端生成
客户端用户登录后服务端为用户生成SeesionId,返回客户端响应Set-Cookie通知客户端保存Cookie后续请求自动发送Cookie
Session可保存在文件、数据库、内存中
HTTPS
在TCP与HTTP之间添加SSL/TLS为上层安全保驾护航
HTTPS=HTTP+加密+认证+完整性保护
HTTPS的单向认证与双向认证
URI、URL、URN
URI(Uniform Resource Identifier)统一资源标识符,资源抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫URI
URL(Uniform Resource Locator)统一资源定位符,是一种具体的URI,在用地址定位
URN(Uniform Resource Name)统一资源名称,也是一种具体的URI,在用名称定位
常见的URI
file:///sdcard/download/everything.mp3
geo:52.76,-79.0342
ldap://[2001:db8::7]/c=GB?objectClass?one
tel:10086
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2