小白图解网络电子书-笔记三

75 阅读2分钟

1IP层会分片,为啥tcp也分片

image.png 1.1 数据先到传输层再到网络层,再传输层叫分段再网络层IP叫分片 TCP长度是MSS IP长度是MTU

MSS:Maximum Segment Size。TCP提交给IP层最⼤分段⼤⼩,不包含TCP Header和TCPOption,只包含TCP Payload,MSS是TCP⽤来限制应⽤层最⼤的发送字节数。假设MTU= 1500 byte,那么MSS = 1500- 20(IP Header) -20 (TCP Header) = 1460 byte,如果应⽤层有2000 byte发送,那么需要两个切⽚才可以完成发送,第⼀个TCP切⽚= 1460,第⼆个TCP切⽚= 540。 1.2 TCP三次握手,MSS会再三次握手的时候传递给对方,用来通知本地可以最大接受的TCP报文数据

image.png 其实MSS是作为可选项引⼊的,只不过⼀般情况下MSS都会传,但是万⼀遇到了哪台机器的实现上⽐较调⽪,不传MSS这个可选项。那对端该怎么办?如果没有接收到对端TCP的MSS,本端TCP默认采⽤MSS=536Byte。那为什么会是536? 前⾯提到了IP会切⽚,那会切⽚,也就会重组,⽽这个576正好是IP最⼩重组缓冲区的⼤⼩。

image.png

2localhost和0.0.0.0的区别

localhost不叫ip它是一个域名,默认的时候是没区别的 ping 0.0.0.0是会失败的,因为IPV4是无效地址

image.png

3连接⼀个IP不存在的主机时,握⼿过程是怎样的?

3.1三次握手

image.png

3.2链接一个IP不存在的主机的时候,握手过程是咋样的 如果目的ip在局域网里面,第一次握手会失败,然后不断尝试重发握手请求,本机不断发出arp请求企图获取目的机器的MAC地址,最后没能获取,这些TCP握手最后都发不出去

4代码执行了数据就发出去了么

4.1 Socket缓冲区 操作系统的一个文件,里面由很多api listen 可以监听其他客户端的链接 connect 作为客户端链接服务器 send 和 write 可以发送数据,recv 或 read 可以接受数据 socket就是代理人一样,对它操作,如果我们想给远端服务发点什么东⻄,那就只需要对这个⽂件执⾏写操作就⾏了。

这个地⽅就是socket缓冲区。⽤户发送消息的时候写给send buffer(发送缓冲区)。⽤户接收消息的时候,是从recv buffer(接收缓冲区)中读取数据。也就是说⼀个socket,会带有两个缓冲区,⼀个⽤于发送,⼀个⽤于接收。因为这是个先进先出的结构,有时候也叫它们发送、接收队列。

image.png

UDP部分