OSI的七层结构图是制定的标准,可是在现实中并无被普遍采用;TCP/IP的5层是为了方便学习而假设出来的;现实中普遍使用的是TCP/IP的四层网络结构图。html
以TCP/IP五层结构图来说解:应用层主要是dns、http、ftp、smtp等应用层协议;运输层主要是tcp、udp协议;网络层主要是ip协议;数据链路层是MAC帧;物理层是010101的比特流。web
咱们经常使用的http、dns、ftp等应用层协议。网络
1.它们都有本身的报文格式(请求报文和响应报文),报文有本身的语法、含义。app
2.应用层协议都有本身的端口,如http为80,ftp为21,ssh为22,smtp为25,dns为53,https为443。ssh
3.应用层协议的报文传输依赖下面的运输层协议tcp或udp来进行传输。tcp
这时候咱们来理解各类协议就很容易了。如http协议:下面使用http://www.kongfz.com
的请求和响应报文来举例。学习
GET http://www.kongfz.com/ HTTP/1.1 Host: www.kongfz.com Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 DNT: 1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,ja;q=0.8,zh-CN;q=0.7,zh;q=0.6 Cookie: acw_tc=7b39758315366525831781305e07127bc2496e172c5bae202bda3e35c76e72; kfz_uuid=0147d2f0-1626-4a30-9109-89bc69daa209; shoppingCartSessionId=3ce70b7ecc16ff4b0f5cbe4a35371d73; reciever_area=1006000000; PHPSESSID=m0m8apquke28uscf2usiam9ouc1uveko; kfz_trace=0147d2f0-1626-4a30-9109-89bc69daa209|0|20d476e6329fb229|-; kfz-tid=0502f82d47b9978735efd2b427a4babb; Hm_lvt_bca7840de7b518b3c5e6c6d73ca2662c=1538441986,1538464530,1538634990,1538703246; Hm_lpvt_bca7840de7b518b3c5e6c6d73ca2662c=1538703246; Hm_lvt_33be6c04e0febc7531a1315c9594b136=1538441986,1538464530,1538634990,1538703246; Hm_lpvt_33be6c04e0febc7531a1315c9594b136=1538703246 If-None-Match: W/"5bb6bf4e-46d7d" If-Modified-Since: Fri, 05 Oct 2018 01:33:02 GMT
请求报文的格式:ui
第一行为状态行,代表请求的方法,请求的网址,使用的http协议版本。spa
中间就是请求发送的各类头部信息,都是k-v对。rest
最后就是请求的内容,这里没有,若是咱们提交表单或上传什么数据的话,就会有请求内容这一块。
HTTP/1.1 304 Not Modified Date: Fri, 05 Oct 2018 01:34:12 GMT Connection: keep-alive Server: openresty Last-Modified: Fri, 05 Oct 2018 01:33:02 GMT ETag: "5bb6bf4e-46d7d" 响应的html文档省略...
响应报文的格式:
第一行是状态行,代表http的协议版本,状态码及说明。
中间也是响应的头部信息。
最后就是响应的内容,这里是返回一个html页面,内容就不显示了。
当咱们链接WLAN时(家里的WIFI或者是学校的WLAN),咱们查看网络属性能够看到都是自动获取ip地址。经过ipconfig
能够查看到本身被分配的ip。这就是动态主机配置协议。DHCP服务分配给客户端的ip地址是临时的,这很适合常常移动位置的计算机。
http使用tcp协议,dns使用udp协议,ftp使用tcp协议,smtp使用tcp协议,dhcp使用udp协议。
由于UDP没有拥塞控制,因此网络出现的拥塞也不会下降它的发送速率,使得其适用于实时性高的应用,如:网络电话、视频、游戏等。
接收方对UDP报文进行校验和的验证,若是不正确则丢弃。
1.中止等待协议。保证不丢包。
2.以字节为单位的滑动窗口
拥塞避免控制: 拥塞窗口是指字节滑动窗口,即TCP发送的报文(以字节为单位)。
1.设置慢开始门限为16;慢开始,指数增大,每一次是以前的2倍:1-2-4-8-16,到达门限值后,改成拥塞避免。
2.拥塞避免,使用加法增大,16-17-18---24,出现了超时状况。这时候认为网络拥塞。调整慢开始门限值为当前拥塞窗口的一半:12,并从新使用慢开始。
3.从新慢开始,1-2-4-8-12,到达门限值,改成拥塞避免。
4.拥塞避免,12-13-14-15-16,这时候连续收到3个ACK。说明个别报文在网络中丢失了,网络并无出现拥塞。执行快恢复,而不是慢开始。把门限值调整为当前拥塞窗口的一半:8。并把拥塞窗口调整为8。
5.而后使用拥塞避免,8-9-10…直到碰到超时或连续的ACK状况。
一个概念是,网络中的拥塞状况是没法肯定的,咱们只能在实际中去探测当前拥塞窗口的一个门限值是多少。若是咱们认为如今出现网络拥堵,就调整对应的门限值从新开始,这样下一次到达门限值时应该不会出现拥堵了。若是网络拥塞严重,就再调整门限值。使用一次次的门限降级,来避免加剧网络拥塞的状况从而消除网络拥塞。固然,在降级后,还会一次次地加法增大,由于实际状况老是在不断变化的。一次次的门限升级可使得网络的传输效率最大化。
1.寻址与路由
2.分段与重组1.IP数据报经过不一样类型的通讯网络发送,IP数据报的大小会受到这些网络所规定的最大传输单元的限制。2.将IP数据报拆分红一个个可以适合下层技术传输的小数据报,被分段后的IP数据报能够独立地在网络中进行转发,在到达目的主机后被重组,恢复成原来的IP数据报。