-------------------------------------------------------
TCP(Transmit Control Protocol) UDP + data
-------------------------------------------------------
-------------------------------------------------------
纠错(保证数据不丢失、无错误、不重复到达、顺序不乱)
TCP/IP主协议没变,但是增加了很多协议,具体协议见PPT(了解),
-------------------------------
-------------------------------
-------------------------------
-------------------------------
-------------------------------
-------------------------------
4. RFC(Request For Comments)征求意见文档
[3] 家庭网络(《家庭网络.bmp》)
1. A电脑如何跟局域网内部设备通讯?
telnet本地linux计算机
2. A电脑如何跟局域网外部的设备通讯?
百度
[4] 资料和工具
1. 资料
TCP/IP详解卷一
2. 工具
WireShark
[5] 设置网络参数
1. IP地址
(1) 作用
唯一标识一台主机
(2) 组成
网络地址 + 主机号
网络地址 用于区分两台电脑是否在同一个网络内,类似电话号码的区号
主机号 用于区分同一个网络中的两台机器
(4) 长度
IPv4 4字节(32位)
IPv6 16字节(128位)
(5) 字节序(大端--网络字节序)
(6) 表示
将4字节的数分别转换成10进程的数,用“.”分隔来表示IP地址,称点分十进制
例: 192 .168. 0 .1
11000000 10101000 00000000 00000001
(7) 分类
网络地址主机号 高位规定 地址范围 私有地址(局域网地址) 保留
A 1 3 0 0.0.0.0 - 127.255.255.255 10.x.x.x 127.x.x.x(环回)
B 2 2 10 128.0.0.0 - 191.255.255.255 172.16.x.x-172.31.x.x 169.254.x.x(没有DHCP服务器)
C 3 1 110 192.0.0.0 - 223.255.255.255 192.168.x.x
D 组播 1110
E 保留
网络地址 主机地址为0
广播地址 主机地址为全1的,如: 192.168.0.255
2. 子网掩码(mask)
IP地址 & mask = 网络地址
例:
十进制 二进制
192.168.0.1 11000000 10101000 00000000 00000001
& 255.255.255.0 11111111 11111111 11111111 00000000
------------------------------------------------------------
192.168.0.x 11000000 10101000 00000000 00000000
3. 网关(Gate)
A电脑<---->网关<----->internet
4. DNS
域名( 地址
[6] telnet--->虚拟机
1. 将虚拟机的IP地址转换为他的MAC(网卡)地址 ARP
2. A电脑通过虚拟机的mac地址发送数据包虚拟机 TCP
3. 虚拟机通过A电脑的mac地址发送数据包给A电脑 TCP
4. A电脑通过虚拟机的mac地址发送数据包虚拟机 TCP
5. A电脑通过虚拟机的mac地址发送数据包给虚拟机 telnet
1. 地址 DNS协议
2. 通过网关的IP地址转换为他的mac地址 ARP
3. 通过网关的MAC地址发送数据(发给baidu)包给网关 TCP
4. baidu-->网关--->A电脑 TCP
5. A电脑-->网关--->baidu TCP
6. A电脑-->网关--->baidu http
每一个应用程序进程有一个端口号,通讯时区分数据包属于哪个应用程序进程
1 - 1023 知名端口号(已经分配给标准应用服务软件)
1024 - 5000 注册端口号(非标准应用服务软件的软件可以申请的端口号范围)
5000 - 65535 动态分配的端口号(系统动态分配给应用程序使用的)
-----------------------------------
| dest mac | src mac | arp data |
------------------------------------
-------------------------------------------------------------------
| dest mac | src mac | dest ip | src ip | dest port | src port |
-------------------------------------------------------------------
---------------------------------------------------------------------------
| dest mac | src mac | dest ip | src ip | dest port | src port | data
---------------------------------------------------------------------------
typedef unsigned int in_addr_t;
* @param[out] inp 二进制形式(网络字节序 大端)的ip地址
* @return @li !0 ip字符串是有效的ip地址
int inet_aton(const char *cp, struct in_addr *inp);
* @li INADDR_NONE(-1) ip字符串无效
* @notes INADDR_NONE(-1)也是有效的IP地址(255.255.255.255)
in_addr_t inet_addr(const char *cp);
* @param[in] in 二进制形式的IP地址
* @notes ip字符串放在静态数据段,并且放在固定位置,所以第二次调用会覆盖第一次调用的结果
char *inet_ntoa(struct in_addr in);
* @param[in] hostlong(hostshort) 主机字节序的整数
unsigned short long htonl(unsigned short long hostlong);
unsigned short int htons(unsigned short int hostshort);
* @param[in] nettlong(netshort) 网络字节序的整数
unsinged long ntohl(unsigned long netlong);
unsigned short ntohs(unsigned short netshort);