• 网络协议


    ###

    一,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服务器,任何的服务端编程语言,都没法脱离这个本质。

    ####

    ####

  • 相关阅读:
    iOS中的NSTimer 和 Android 中的Timer
    正则表达式中*的使用小注意
    NSUrlConnection 和 NSUrlRequest 的关系
    iOS 中的第三方库管理工具
    Android 向Application对象添加Activity监听
    Android dp px转化公式
    Android 返回桌面的Intent
    Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
    Equinox OSGi应用嵌入Jersey框架搭建REST服务
    在OSGI容器Equinox中嵌入HttpServer
  • 原文地址:https://www.cnblogs.com/andy0816/p/15144352.html
Copyright © 2020-2023  润新知