zoukankan      html  css  js  c++  java
  • 网络协议

    ###

    一,tcp/ip协议

    tcp和udp:tcp像打电话,这是互动的,这是tcp的应答机制,全双工,udp像发短信,没有回复,是半双工,所以tcp复杂但是安全稳定
    端口:指TCP/IP协议中的端口,端口号的范围从0到65535,比如浏览器网页服务的80端口,ftp的21端口,ssh的22端口,mysql的3306端口,redis的6379端口,
    ip地址:每一个电脑都有一个ip地址,而且在公网中是独一无二的,每一个联网的程序都有一个端口,这样通过ip+端口,就可以在网络中,找到唯一的一个程序,

    二,tcp的三次握手四次挥手

    TCP协议的三次握手,四次挥手
    
    3次握手:
    这个通信的过程有一个3次握手的过程,
    1次握手:客户端往服务端发信息,问我能发信息吗?同时携带一个标志,seq=x
    2次握手:服务端往客户端发信息,说能,然后询问我能往客户端发信息吗?这是两个合成一个了,同时会发送两个标志,seq=y,ack=x+1
    3次握手:客户端往服务端发信息,说能,同时会发送两个标志,ack=y+1
    
    建立通信:
    这样就建立了通信了,建立了连接就不会断了,就可以进行来回通信了,
    后面就可以传输数据了,客户端传输数据,然后服务端告诉客户端返回数据,这就是tcp的应答机制了,
    
    4次挥手:
    结束的时候,可以是服务端发起,也可以是客户端发起,
    假设是客户端发起挥手,
    1次挥手:客户端往服务端发信息,说我不想发送信息了
    2次挥手:服务端往客户端发信息,说好的
    3次挥手:服务端往客户端发信息,说我也不想发送信息了
    4次挥手:客户端往服务端发信息,说好的
    这样四次挥手就结束了通信了,
    
    三次挥手和四次挥手之间就确保了数据可以稳定传输,
    
    为什么会有四次挥手?
    在建立连接的时候,Server把响应客户端的请求和请求客户端的确认放在一起发送给客户端了,即第二次握手时有SYN+ACK
    而断开连接的时候,一个方向的断开,只是说明该方向数据已传输完毕,而另一个方向或许还有数据,
    所以得等到另一个方向数据也全部传输完成后,才能执行第三次挥手
    因为socket是全双工的,有收发两个通道,所以这两个都要关闭才可以,所以会有四次来回,

    三,tcp和udp比较

    tcp协议和udp协议比较:
    1,udp 直接发送信息,不需要建立连接,tcp需要建立连接
    2,所以UDP快,但是不安全,tcptcp比较安全,有反馈,这是牺牲效率完成的
    3,而且udp发送之后有没有收到,是没有返回信息的,所以不知道有没有收到,
    tcp比较安全,更加稳定,tcp也可能丢包,但是会重发,比如打电话,打电话的时候会嘟嘟嘟的响,这是在确定通道,通了之后这个通道会占用,别人就不能打了,
    所以tcp比较复杂, 但是比较安全,稳定,
    
    
    udp就像是发短信,
    tcp就像是打电话,
    udp想象成写信,每一封信都要写收件人的地址,这种不太安全,这封信可能丢,
    
    tcp采用了应答机制,
    比如udp,
    a给b发了一个信息,b有没有收到,这是不会给a回复的,
    但是tcp,
    a发送了一个消息给b,b会告诉a我收到了,这是有回复的,a发送了之后,会开始计时,如果没有收到,会超时重传,
    所以tcp的机制,就比较安全,会确保数据已经传递过去了,
    
    udp发送,客户端发送了之后,服务器是没有反馈数据的,也就是你有没有真的发过去,是不知道的,
    tcp,一大特点就是操作系统的会互相打招呼,是需要返回数据的,告诉你是不是你发的东西我真的收到了,

    ####

    四,http协议

    http协议:HyperText Transfer Protocol,超文本传输协议,是一种发布和接收HTML页面的方法。服务器端口号是80。
    http和https的区别:https是http协议的加密版本,在HTTP下加入了SSL层。服务器端口号是443。

    http请求的内容主要有请求方法,请求url,请求头,请求体
    http响应的内容主要有响应状态码,响应头,响应体,

    http常用的请求方法:在Http协议中,定义了八种请求方法。常用的是get和post, http常用的请求头:User
    -Agent:浏览器名称。Referer:表明当前这个请求是从哪个url过来的。Cookie:http协议是无状态的。所以需要cookie保持长连接 http常见响应状态码:200正常,300重定向,400客户端错误,403服务器拒绝访问,权限不够,500服务器错误

    ####

    五,七层网络协议和五层网络协议,

    互联网协议
    
    a) 四层协议:应用层、传输层、网络层、网络接口层
    b) TCP/IP五层模型
    五层协议: 应用层:用户使用的应用程序都归属于应用层,作用为规定应用程序的数据格式。
    抓包工具,比如fiddler,Charles,都是只能抓应用层的协议,wareshark可以抓传输层的协议,但是一般不用这个软件太重了,
    http协议,FTP,SMTP协议,都在应用层,
    tcp,udp,在传输层,
    ip协议,在网络层,
    传输层:网络层帮我们找到主机,但是区分应用层的应用就是靠端口,所以传输层就是建立端口到端口的通信。(端口范围0
    -655350-1023为系统占用端口) 网络层:区分不同的广播域或者子网(否则发送一条数据全世界都会收到,是灾难)。 数据链路层:定义电信号的分组方式。 物理层:基于电器特性发送高低点电压(电信号),高电压对应数字1,低电压对应数字0。

    c)OSI七层模型
    七层协议:(应用层、表示层、会话层)、传输层、网络层、(数据链路层、物理层)

    ####

    六,用户在浏览器输入一个url到看到数据,发生了什么?

    浏览器访问服务器的过程:这是一个面试题,
    输入域名,比如baidu.com,
    
    http协议的认识。流程:
    1.域名解析,会到dns服务器会找到对应的ip地址,全球的都在这里,
    域名解析检查顺序为:浏览器自身DNS缓存---》OS自身的DNS缓存--》读取host文件--》本地域名服务器--》权限域名服务器--》根域名服务器。
    如果有且没有过期,则结束本次域名解析。域名解析成功之后,进行后续操作
    2.tcp3次握手建立连接
    3.建立连接后,发起http请求
    4.服务器端响应http请求,浏览器得到到http请求的内容
    5.浏览器解析html代码,并请求html代码中的资源
    6.浏览器对页面进行渲染,展现在用户面前,浏览器拿到响应报文后,再通过 浏览器引擎去渲染网页,解析DOM树,javascript引擎解析并执行脚本操作,插件去干插件该干的事儿
    
    说白了,所谓web的本质,无非是:请求/处理/响应 ,任何的web服务器,任何的服务端编程语言,都没法脱离这个本质。

    ####

    ####

  • 相关阅读:
    part11-1 Python图形界面编程(Python GUI库介绍、Tkinter 组件介绍、布局管理器、事件处理)
    part10-3 Python常见模块(正则表达式)
    Cyclic Nacklace HDU
    模拟题 Right turn SCU
    状态DP Doing Homework HDU
    Dp Milking Time POJ
    区间DP Treats for the Cows POJ
    DP Help Jimmy POJ
    Dales and Hills Gym
    Kids and Prizes Gym
  • 原文地址:https://www.cnblogs.com/andy0816/p/15144352.html
Copyright © 2011-2022 走看看