IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> tcp/ip网络编程——笔记 -> 正文阅读

[系统运维]tcp/ip网络编程——笔记


参考: 《TCP/IP网络编程》课后练习答案第一部分1~5章 尹圣雨——害你加班的BUG都是我写的
《TCP/IP网络编程》学习笔记——riba2534
友友们可直接跳转,接下来的内容是基于我的知识的查漏补缺型笔记,并不全面。

第一章

2.在服务器端创建套接字后,会依次调用listen函数和accept函数。请比较并说明两者作用。

listen:将套接字转为可接受连接方式。
accept:受理连接请求,并且在没有连接请求的情况调用该函数,不会返回。直到有连接请求为止。二者存在逻辑上的先后关系。

5.Linux中的文件描述符与Windows的句柄实际上非常类似。请以套接字为对象说明他们的含义。

都是为了区分指定文件而赋予的整数值。

第二章

5.何种类型的套接字不存在数据边界?这类套接字接收数据时需要注意什么?

连接指向型TCP套接字不存在数据边界。因此输入输出函数的响应次数不具有意义。重要的不是函数的响应次数,而是数据的收发量。 因此,必须将传输数据的量和接收数据的量制作成编码,保证发送数据的量和接收数据的量是一致的,特别要注意是制作依赖函数响应次数判断代码。

6.修改代码

	write(clnt_sock, message, 4);
	write(clnt_sock, message+4, 4);
	write(clnt_sock, message+8, 4);
	write(clnt_sock, message+12, sizeof(message)-12);

第三章

先有sockaddr_in结构体,然后转换为sockaddr结构体,传递给bind即可。
小端序:高位字节存放到高位地址。
网络字节序=大端序
除了向sockaddr_in结构体中填充数据要转换成网络字节序,其他情况是自动转换的,不需要程序员考虑。
几种提供的方便的函数:课本中。。
服务器:bind
客户端:connect

6.什么是知名端口?其范围是多少?知名端口中具有代表性的HTTP合同FTP端口号各是多少?

“知名端口(Well-known PROT)”是指预定分配给特定操作的端口。其范围是0~1023,其中最知名的端口是HTTP:80端口和TCP:21

7.题目大概意思是:为什么bind中第二个参数是sockaddr,但是传入的是sockaddr_in

bind函数第二个参数类型是sockaddr结构体,很难份分配IP地址和端口号,因此IP地址和PORT号的分配是通过sockaddr_in完成的。因为该结构体和sockaddr结构体的组成字节序和大小完全相同,所以可以强转。

10.回送地址表示计算机本身,为127.0.0.1

第四章 基于tcp(一)

两个:sock,addr结构体
客户端自动在connect函数实现时给套接字分配ip和端口号,无需调用bind函数。

迭代服务器端、客户端

connect函数(客)和accept函数(服)不一定谁先调用,不管怎样,两个都运行了,才能传数据。
数据太大,客户端可能尚未收到(write)全部数据包就调用了read函数


5.什么时候创建连接请求等待队列?它有何作用?与accept有什么关系

listen函数的调用创建了请求等待队列。它是存储客户端连接请求信息的空间。accept函数调用后,将从本地存储的连接请求信息取出,与客户端建立连接。

7.题目回家写一下

第五章 基于tcp(二)

回声服务器端无事,回声客户端不妥,write函数马上接read函数,是否能完全接到所有数据,是否需要等待。
解决:提前知悉接收长度,循环read。降低异常使用判断条件,此处划线课本
P85 此处有作业

5.2 tcp原理

read和write都有缓冲,函数调用一瞬间是向缓冲输入或者读取数据。
write在数据移到缓冲时返回,当然了,tcp会保证后续传输,这个不必担心。
SYN是同步消息(用来同步的消息)
断开:各发一次fin,四次握手。

此处有5.6道题 请写一下

第六章 基于UDP

流控制是UDP和TCP区别的重要标志。
TCP:向10个客户提供服务,服务器需要:1个守门的套接字,和10个套接字对应客户。
UDP:来去多少人,都一个套接字,客户服务器都是。
udp,tcp服务器端都是用bind来绑定ip地址和端口号,bind不分tcp,udp。tcp客户端用connect绑定,udp客户端的sendto()第一次用也会自动分配,所以大家都有方法。
udp有数据边界,所以它的一个数据包能称为数据报。


这里也有题目

已连接套接字和未连接

与同一主机长时间通话,可将套接字转为已连接,提高效率。
使用connect即可,然后就变成已连接套接字了,还可以使用read、write来替换sendto等。

第七章 优雅断开套接字连接

半关闭,能有效解决close的问题,就是最后一点数据收不到的问题。输入流和输出流,可以关一个,不用两个都关。


1.解释TCP中“流”的概念。UDP中能否形成流?请说明原因

udp不形成流,因为udp不相互连接。

第八章 域名及网络地址

域名和IP转换的学习是因为,客户知道网址发送信息后,需我们转换成ip和端口号才能接收到包。

第九章 套接字的多种可选项

套接字可选项能查看修改套接字里面的信息。
设置缓冲大小不一定会按照我们输入的完全一样,因为tcp有自己的考量,会向那边接近。

SO_REUSEADDR

先发fin的才有time_wait,time_wait会使服务器锁定此套接字,如果服务器有其他事情,就会被稍作耽搁,所以可以修改此标题为true,就可以再time wait的情况下分配此套接字。

TCP_NODELAY

Nagle算法

流水线

第十章多进程服务器端

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:16:52  更:2022-08-06 11:20:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:58:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码