卷1前三章知识点汇总
来源:互联网 发布:淘宝卖家发快递3元包邮 编辑:程序博客网 时间:2024/06/07 00:38
--------------------------------------《1》---------------------------------------------
尽管客户和服务器之间使用某个应用协议通信,传输层却使用TCP通信。注意,客户和服务器之间的信息流在其中
一端是向下通过协议栈的,跨越网络后,在另一端则是向上通过协议栈的。另外注意,客户和服务器通常是用户进程的,
而TCP和IP协议通常是内核中协议栈的一部分。
--------------------------------------《2》---------------------------------------------
OSI模型的低下两层是随系统提供的设备驱动程序和网络硬件。通常情况下,
除需知道数据链路的某些特性外,我们不必知道这两层的具体情况。
网络层有IPv4和IPv6这两个协议处理。可以选择的传输层协议有TCP或UDP。
TCP和UDP之间留有缝隙,表明网络可以绕过传输层直接使用IPv4或IPv6是可能的。
这就是原始套接字
OSI模型的顶上三层被合并为一层,称为应用层。这就是Web客户,Telnet客户,Web服务器,
Ftp服务器和其他我们在使用的网络应用所在的层。对于网际协议,OSI模型的顶上三层协议
几乎没有区别
--------------------------------------《3》---------------------------------------------
请看下文(自己改了一点)
三次握手:“喂,你听得到吗?”“我听得到呀,你听得到我吗?”“我能听到你”--------------------------------------两次握手:“喂,你听得到吗?”“我听得到呀”“喂喂,你听得到吗?”“草,我听得到呀!!!!”“你TM能不能听到我讲话啊!!喂!”“……”------------------------------------------四次握手:“喂,你听得到吗?”“我听得到呀”“你听得到我吗?”“我能听到你”“……”作者:匿名用户链接:https://www.zhihu.com/question/24853633/answer/114872771来源:知乎
1)可靠地实现TCP全双工连接的终止
TCP协议在关闭连接的四次握手过程中,最终的ACK是由主动关闭连接的一端(后面统称A端)
发出的,如果这个ACK丢失,对方(后面统称B端)将重发出最终的FIN,因此A端必须维护
状态信息(TIME_WAIT)允许它重发最终的ACK。如果A端不维持TIME_WAIT状态,而是处
于CLOSED 状态,那么A端将响应RST分节,B端收到后将此分节解释成一个错误(在java中
会抛出connection reset的SocketException)。
因而,要实现TCP全双工连接的正常终止,必须处理终止过程中四个分节任何一个分节的丢
失情况,主动关闭连接的A端必须维持TIME_WAIT状态 。
2)允许老的重复分节在网络中消逝
称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。
2、对于IP数据包来讲,也有一个长度,在IP包头中,以16位来描述IP包的长度,也就是说,
一个IP包,最长可能是65535字节。
3、结合以上两个概念,第一个重要的结论就出来了,如果IP包的大小,起过了MTU值,那么就需要
分片,也就是把一个IP包分为多个,这个概念非常容易理解,一个载重5T的卡车,要拉10T的货,它
当然就得分几次来拉了。
#include <arpa/inet.h>int inet_aton(const char * strptr, struct in_addr *addrptr);//若字符串有效则为1,否则为0in_addr_t inet_addr(const char * strptr);//若字符串有效则为32位的二进制网络字节序的IPv4地址,否则为INVALID_NODEchar * inet_ntoa(struct in_addr inaddr);//指向一个点分十进制数串的指针int inet_pton(int family, const char * strptr,void * addrptr);//若成功则为1,若输入不是有效的表达式则为0,出错则为-1const char * inet_ntop(int family,const void * addrptr, char * strptr,size_t len);//若成功则为指向结果的指针,若出错则为NULL第二个函数几乎已经被废弃。最后两个适用IPv4和IPv6.注意inet_addr的返回值是in_addr_t,即s_addr其他都是sin_addr.最后两个是void *,ANSI 标准之前没有VOID *,为了适应各种套接字协议,才采用了sock_addr的通用结构,包括前面三个函数的参数。后来出现的inet_ntop和inet_pton函数的参数已经可以使用void *.不过内部还是会转换为sockaddr结构的。函数参数>=两个的,都是从左到右。s代表ascII.p代码表达,一般也是ASCII.n代码numeric数值。
- 卷1前三章知识点汇总
- java基础知识点汇总1
- java面试知识点汇总1
- XX项目知识点汇总(1)
- 知识点汇总
- 知识点汇总
- 知识点汇总
- 知识点汇总,知识点聚合汇总
- Java核心技术卷I知识点
- Java多线程知识点汇总(1)
- C语言小知识点 汇总1
- java学习入门知识点汇总1
- C++知识点汇总
- .NET知识点汇总
- java知识点汇总
- Java知识点汇总
- java 基础知识点汇总
- JSP知识点汇总之一
- 鼠标移动到链接上显示提示文字
- 致逝去的青春
- JAVA操作Excel文件
- SQL
- ReentrantLock源码分析
- 卷1前三章知识点汇总
- ES6 Generator函数杂记
- UI视觉设计师工作流程上的总结与建议
- [leetcode]#168. Excel Sheet Column Title
- JVM(一)JVM调优总结
- 有趣的排序方法---基数排序(php版)
- 处理百万级以上的数据提高查询速度的方法
- 鼠标经过时,展示提示内容
- python数据分析学习备忘录