网络原理-TCP-IP

上一篇:网络原理之初识

1、HTTP——超文本传输协议;
HTML——超文本标记语言;
Web前端中Html主负责内容结构,Css主负责样式排版,Javacript主负责前端的逻辑(可编程,动态)。

2、客户端是请求资源的一方,为了标准化如何找到资源。指定了一个定位资源的标准:
URL:唯一资源标识,使得网络上的每一个资源都有一个唯一的身份,类似于资源的身份证号,唯一不冲突。
请求资源等同于找1个人,通过URL找 等同于通过身份证找一个人。
URI中最常使用的叫做URL,错略情况下,可认为URL = URI。

3、协议://服务器的IP:服务进程的port/在该进程上唯一确定资源的路径?QueryString

4、解析request的格式
请求行 \r\n 请求头s \r\n 请求体 (可以没有的)

  • 为什么使用\r\n分割——结合TCP面向字节流来连接,不用特殊分割,无法明确分割各部分
  • 请求头s = 一组key-value
  • 请求行 (方法 路径 协议)

5、HTTP协议:
应用层协议——基本是应用层协议上的最常用协议了
主流的HTTP协议还是TCP为主。

6、规定了状态,通知客户端发生了什么。
状态 = 状态码+描述。
1XX:中间状态的
2XX:成功相关
3XX:资源被移走的情况
4XX:由于客户端请求不对
5XX:由于服务器处理出错

常见状态:
200 一切正常
301 永久移走
302 临时移走
307 临时重定向
400请求格式出错了
404 请求的资源不存在
500 服务器内部错误

7、tomcat是一个Java写的TCP上的服务器,绑定本地端口,默认8080(http)。HTML的常用 后缀名:html,htm。

8、GET和POST的区别:
1)GET方法不能带Request Body
SELECT 那张表,条件
那张表——URL
条件——QueryString

2)Post方法允许带Request Body

GET建议具备等幂性,POST不做要求
幂等性:GET某个URL多少次都不会产生副作用
SELECT一张表2000次结果不变——没有副作用
INSERT一张表,每次提交,结果就会变化——有副作用。

9、校验和:checksum——弱正确性校验——哈希
Checksum 是一种hash算法;
发送方负责结算checksum,并且把结果填到header的校验和。
接收方收到数据后计算checksum。对比计算后的checksum是否就是UDP header中填写的checksum。如果不相等,表示数据被破坏了。
校验和失败,拒收即可——整个数据报就被丢掉了

10、Udp特点:不可靠性 无连接 面向报文的。

  • 没有发送缓冲区 ;
  • 你发送了多少数据,它发送多少数据(包含header部分)——面向报文的 ;
  • Send成功,代表数据已经成功发送了;
    Send成功,不代表数据被对方收到了——UDP根本不知道对方收到没有(不可靠性);
    有了socket,直接就可以发送——没有连接管理。

11、什么是TCP目标中的可靠性

  • TCP的数据会被组合或者分割成合适的大小进行发送 ;
  • 确保机制,发送的数据会尽可能的让对方收到——确认应答+超时重传;
  • TCP保证不会收到错误的数据——校验和 ;
  • 保证按序传递:去重——把收到的重复数据可以辨识出来并丢弃;
  • TCP可以进行“流量控制”——可以根据一些信息,决定发送数据的速度/频率。
  1. 尽最大努力,把数据发送给对方,数据会被重新组装,使得更合适发送,确认应答+超时重传,流量控制;
    2)保证数据按序到达——包括去重;
    3)保证数据不会出错。

12、确认应答机制
如何确保你是否收到了数据?需要接收方回应一声(SN——ASN)。

标记位:1/0
URG:urgent 紧急 16位紧急指针 ;
ACK acknowledge 应答 ACK == 1 表示segment有应答的包的职责,ASN是有效的;
PSHpush 推送 类似于加急快递——整份数据需要加急处理;
RST reset 重置,告诉对方有错误发生;
SYN:synchronized同步;
FIN final最终。

13、如果收不到应答怎么办?
超时重传。
当收到ACK的时候,就把对应的重传任务取消即可。

14、header中的SN和ASN可以达到什么目标呢?
1)可以实现确认应答机制——超时重传地址——尽最大努力,把数据发送给对方(可靠性);
2)接收方可以按照SN进行数据的重新排列后,再把结果给到应用层——保证数据有序传递(可靠性);
3)可以辨识出已经接受过的数据——数据去重(可靠性 )。

15、确认应答
SN是发送数据的第一个字节的序列
ASN是希望对方发送的下一个字节的序列

16、超时重传
不用可以区分为什么没有收到对方的ACK,只管重传即可,如果接收方重复接收,根据SN辨识出后,直接丢弃即可。

17、结论:
TCP协议栈内部,需要维护一个数据结构,管理这个通信通道上的各种数据,需要维护发送缓冲区和接收缓冲区,需要事先沟通ISN,这个数据结构——就是通常所讲的连接——连接是因为要保证可靠性而出现的。


在这里插入图片描述

你可能感兴趣的:(JAVA)