�༭�ƽ�: |
����ͨ�����ں���ҫģ��ľ���
,�������̹������ڴ�����������ļ�ϵͳ���豸�����������������ݽ��ܡ�
�����������ź��ںţ����㿪ʼѧ�ܹ����ɻ�����������ȼ�༭�ƽ��� |
|
28��ǰ(1991��8��26��)linus����linux�ĵ��룬������һ��ΰ���ʱ������ƪ���´ӽ��̵��ȣ��ڴ�������豸�������ļ�ϵͳ������ȷ��潲��linux�ں�ϵͳ�ܹ���linux��ϵͳ�ܹ���һ���������ƣ�������ķֲ��ģ�黯���ں�������������豸�ͳ�ͬ�������ܹ�����������ص��ں˿������ܹ���ч���й�������������linus�ڶ���ǰ����linux���ʼ���
"hello everybody out there using minix - i��m
doing a (free) operating system (just a hobby, won��t
be big and professional like gnu) for 386(486) at
clones. this has been brewing since april, and is
starting to get ready. i��d like any feedback on things
people like/dislike in minix, as my os resembles it
somewhat (same physical layout of the ?le-system (due
to practical reasons) among other things).
i��ve currently ported bash(1.08) and gcc(1.40), and
things seem to work. this implies that i��ll get something
practical within a few months, and i��d like to know
what features most people would want. any suggestions
are welcome, but i won��t promise i��ll implement them
:-)
linus (torv...@kruuna.helsinki.?)"
��ʵ�ϣ�����һ�쿪ʼ��linux���dz����ڳ����ں��˷dz����������ơ����˽����ϵͳ��ʱ������������ҫ֪����1.
����ϵͳ����ι���������դ�ģ�2. ��ӳ�����эͬ������3. ���ͨ���������β��� 4. ��ӳ����ηֹ�����ƪ����ͨ�����ں���ҫģ��ľ��ܣ�ϣ����ϊ���ѱ����щ����ĵ���һ����ש��������á�ʵ���ϣ�����ÿһ��ϣ����ϊ����ר�ҵ��˶���һ��linux��դ���롣
��������linux�ں�һ���߽ܹ�ͼ��

linuxϵͳ�ܹ�ͼ
�ܹ��dz���������ӳ���㣬ӳ������㣬�ں˻���ģ��(���̵��ȣ��ڴ����������э��ջ��)��ӧ�ò㣬���������ҳ�ǹ�����ӳ����ϵ�ϵͳ�ܹ��ļ�����ƣ�����������ϵͳ(�ӵ�ƭ����mcu��с��ƕ��ʽϵͳ�������ܼҿӣ��ǻ����������ǻ۳���)�ڽ�����豸�ŀɲο��ܹ�ģ�͡�
linux�����������pc���ϵģ�ʹ�õ�x86�ܹ������������˵�ƚ�ǿ����ָ���ģʽҳ�ƚ���ȫ���������ǿ������û�̬���ں�̬����һ���с��ƕ��ʽ����������û�еģ����ĺô���ͨ������������ݶ�(segment)���費ͬ��ȩ�ޣ������ں�̬�ĵ��������(����ӳ����դ)����ͨ������ϵͳ����(syscall)�ķ�ʽ���ܷ��ʣ�ȷ���ں˵��ȶ���
����һ�£������ҫ��дһ������ϵͳ������щ������ҫ���ǣ�
���̹���������ڶ�����ϵͳ�а��յ����㷨����cpu��ʱ��ƭ��
�ڴ���������ʵ�������ڴ�������ڴ��ӳ�䣬����ͻ����ڴ档
�ļ�ϵͳ����ν�ӳ�̵�������֯���ļ�ϵͳ��ʵ���ļ��ķ�д�ȳ�����
�豸���������ѱַ�����ʣ�����д�豸������ϣ�����ݡ�
��щ�����dz���ϵͳ�ĺ��ĸ������ƪ��ԭ��������ҫ�ӹ߽ľƕ�����������ϸ�ڲ��ڱ��ĸ��ǡ�
���̹���
�����ڲ�ͬ�ij���ϵͳ����щ��ϊprocess����щ��ϊtask������ϵͳ�н������ݽṹ�����˺ܶ�Ԫ�أ��������������ӡ�
������ص�������ҫ�����������ַ�ռ䣬���ȼ�����������(���������������е�)��ռ�е���դ(�����ź������ļ���)��
cpu��ÿ��ϵͳ�δ�(tick)�жϲ�����ʱ���������������ľ���(���������еľ��̽ṹ��)�����з��ϵ����㷨���½�����ҫ�л������浱ǰ���еľ��̵���ϣ(����ջ��ϣ��)�����ǰ���̣�ѡ���µľ������у�����ǽ��̵��ȡ�
���̵����ȼ�������cpu���ȵļ������ݣ����ȵ��ռ�ŀ�����ø����ȼ��ļ�ܹ���ʱ�õ�cpu�ļ�����դ(��ʱ��ӧ)�������ȼ�������ҳ�ܹ�ƽ���䵽cpu��դ����ϊ��ҫ����������е�������(process
context)�ȣ����̵��л��������гɱ��ģ������㷨�ڽ����л�ƶ����ҳ��ҫ����ч�ʡ�
�����ڵ�linux����ϵͳ�у���ҫ���õ���ʱ��ƭ��ת�㷨(round-robin)���ں��ھ����ľ��̶�����ѡ������ȼ��ľ������у�ÿ��������ȵ�ʱ�䡣���㷨��ֱ�ۣ�����ȼ�ᵼ��ijщ�����ȼ��ľ��̳�ʱ�����õ����ȡ�ϊ����ߵ��ȵĺ�ƽ�ԣ���linux
2.6.23֮�������˳�ϊ��ȫ��ƽ������cfs(completely fair scheduler)��
cpu���κ�ʱ���ֻ������һ�������û���ʹ���ſ�app����ƶʱ��ͬʱ�����д������죬�ſ������������ͬ�ij���ϊʲô������������ͬʱ���у�cfs��ŀ����������еij���������������ͬ���ٶ��ڶ�����е�cpu�����у���nr_running�����еľ��̣�ÿ��������1/nr_running���ٶȳ���ִ�у���������2�������е�������ôÿ����50%��cpu������������ִ�с�
cfs������"��������ʱ��"�ĸ����������ʱ����p->se.vruntime
(nanosec-unit) ��ʾ��ͨ������¼�ͷ�������ӧ�û�õ�"cpuʱ��"��������ĵ�������£��κ�ʱ�����е�����ӧ������ͬ��p->se.vruntimeֵ(�����ᵽ������ͬ���ٶ�����)����ϊÿ�������dz���ִ�еģ�û������ᳬ������״̬��ӧ��ռ�е�cpuʱ�䡣cfsѡ����ҫ���е������������p->se.vruntimeֵ���dz�����������ѡp->se.vruntimeֵ��с����������(���ٱ����ȵ�������)��
cfsʹ���˻���ʱ������ĺ������ϊ���������ִ����ʱ���ߡ����е�����p->se.vruntime�ؼ�������cfs������ѡ������ߵ�����ִ�с�����ϵͳ���у�ִ�й�������ᱻ�ŵ������ұߣ��ص���ÿ�������л����ϊ����ߵ����ӷ���һ����ȷ����ʱ���ڻ��cpu��դ��
�ܽ���˵��cfs��������һ�����������л�(����tick�жϸ�����ʱ��)ʱ��������ʹ�õ�cpuʱ���ӵ�p->se.vruntime���p->se.vruntime��ֵ��������������˺��������ߵ�����ʱ(ͬʱ�ڸ��������������������һ��с�����ⱦ��룬��ֹ�����л�����ӱ������)������ߵ�����ѡ��ִ�у���ǰ��������ռ��

cfs�����
һ����˵���������������������ҿ�����ϊÿ�������ṩ��ƽ��cpuʱ�䡣ijщʱ������ҫ��������飬��ϊÿ�����ṩ��ƽ��cpuʱ�䡣���磬ϵͳ����ϊÿ���û�����ƽ����cpuʱ�����ϊÿ���û���ÿ���������ƽ����cpuʱ�䡣
�ڴ����
�ڴ汾����һ���ⲿ�洢�豸��ϵͳ��ҫ���ڴ�����ѱַ���ҵ���ӧ���ڴ浥Ԫ(memory cell)����д���е����ݡ�
�ڴ�����ͨ��ָ��ѱַ��cpu���ֽڳ���(32bit������64bit����)���������ŀ�ѱַ��ַ�ռ䡣��32λ����������ѱַ�ռ���4gbtyes����64λ��������������2^64bytes��
���ĵ�ַ�ռ��ʵ��ϵͳ�ж��������ڴ��أ����գ�ϊ�����ַ�ռ䡣��ϵͳ�����еľ�����˵��������ÿ�����̶�����ռ�������ַ�ռ䣬��������֪�������̵��ڴ�ռ䡣��ʵ�ϲ���ϵͳ��ӧ�ó��������ע����ӧ�ó�������ÿ��������������������е�ψһ���̡�
linux�������ַ�ռ��ϊ�ں˿ռ���û��ռ䡣ÿ���û����̵�����ռ䷶χ��0��task_size����task_size��2^32��2^64�����������ںˣ����ܱ��û����̷��ʡ�task_size�������ã�linuxϵͳĭ������3:1��ӧ�ó���ʹ��3gb�ŀռ䣬�ں�ʹ��1gb�ŀռ䣬������ֲ�������ʵ��ram�ĵ�с����64λ�����ϣ������ַ�ռ�ķ�χ���էdz���ʵ����ֻʹ������42λ��47λ(2^42��2^47)��

�����ַ�ռ�
�����������£������ַ�ռ��ʵ��ϵͳ���õ������ڴ�(ram)���ں˺�cpu���뿼����ν�ʵ�ʿ��õ������ڴ�ӳ�䵽�����ַ�ռ䡣
һ��������ͨ��ҳ��(page table)�������ַӳ�䵽������ַ�������ַ�����ʹ�õ��û�&�ں˵�ַ��أ�������ַ����ѱַʵ��ʹ�õ�ram��
����ͼ��ʾ������a��b�������ַ�ռ䱻��ϊ��с��ȵij��֣���ϊҳ(page)�������ڴ�ͬ�����ָ�ϊ��с��ȵ�ҳ(page
frame)��

�����������ַ�ռ�ӳ��
����a��1���ڴ�ҳӳ�䵽�����ڴ�(ram)�ĵ�4ҳ������b��1���ڴ�ҳӳ�䵽�����ڴ��5ҳ������a��5���ڴ�ҳ�ͽ���b��1���ڴ�ҳ��ӳ�䵽�����ڴ�ĵ�5ҳ(�ں˿ɾ�����щ�ڴ�ռ䱻��ͬ���̹���)��
��ͼ��ʾ��������ÿ�������ַ�ռ��ҳ����ij��page frame��������ҳ���ܲ�δʹ�û������ݻ�û�б����ص������ڴ�(��ʱ����ҫ),ҳ������ϊ�����ڴ�ҳ���û�����ӳ���ϣ�����ʵ������ҫ��ʱ���ٱ��û����ڴ档
ҳ��(page table)�������ַ�ռ�ӳ�䵽������ַ�ռ䡣�����������һ�����齫����ҳ������ҳһһ��ӧ������������������ҫ��������ram�������������ҳ��������ÿ��ҳ��сϊ4kb�������ַ�ռ��сϊ4gb����ҫһ��1�����Ԫ�ص�����������ҳ����
��ϊ�����ַ�ռ�ľ����������ʵ�ʲ�û��ʹ�ã���щҳʵ�ʲ�û�к�page frame����������༶ҳ��(multilevel
paging)�ܼ���ҳ��ʹ�õ��ڴ棬��߲�ѯч�ʡ����ڶ༶ҳ����ϸ���������բο��ĺ�ο����ϡ�
�ڴ�ӳ��(memory mapping)��һ����ҫ�ij��������������ں˺��û�ӧ�ó���ȶ���ط���ӳ���ǽ�����ij������դ������(ҳ������ij���豸��i/o�˿ڵ�)ת�ƶ�ij�����̵������ڴ�ռ䡣��ӳ��ĵ�ַ�ռ�ij�������ʹ�ô�����ͨ�ڴ�ķ���(�ե�ַ����ֱ�ӽ��ж�д)���κζ��ڴ�ĸķ����զ�ת�ƶ�ԭ����դ�����罫ij���ļ�������ӳ�䵽�ڴ��у�ֻ��ҫͨ�������ڴ�����ȡ�ļ������ݣ�ͨ�����ķ�д�����ڴ������ļ������ݣ��ں�ȷ���κθķ������զ����ֵ��ļ��
���⣬���ں��у�ʵ���豸����ʱ������(�ⲿ�豸)����������������ա�ӳ�䵽�����ַ�ռ䣬��д��щ�ռ�ᱻϵͳ�ض����豸���ӷ����豸���в���������ؼ���������ʵ�֡�
�ں˱��������щ����ҳ�ѿ��������ˣ���щ���ǿ��еģ�������������ʹ��ram�е�ͬһ�������ڴ�ķ�����ͷ��ƿdz�ƶ���������ں˱���ȷ����ɵ��ٶⱦ����죬�ں�ֻ�ܷ�������page
frame�������ڴ��ϊ��с�ij��ֵ��������û��ռ䣬�û��ռ�ij������խ����ں��յ���page
frame�ֳɸ�с��������������̡�
�����ļ�ϵͳ
unixϵͳ�ǽ�����һщ�м��ص������ϵģ�һ���dz���ҫ�������ǣ�
everything is a ?le.
��ϵͳ�������е���դ�����կ������ļ���ϊ��֧�ֲ�ͬ�ı����ļ�ϵͳ���ں����û����̺��ļ�ϵͳʵ�ּ������һ�������ļ�ϵͳ(virtual
file system)����������ں��ṩ�ĺ�������ͨ��vfs(virtual file system)������ļ��ӿڷ��ʡ������ں���ϵͳ���ַ��Ϳ��豸���ܵ�������socket��������������ն˵ȡ�
�������ڲ����ַ��Ϳ��豸���豸�ļ�����/devŀ¼�µ���ʵ�ļ�������д����ִ�е�ʱ��������ݻᱻ��ӧ���豸������̬������

vfsϵͳ
�������ļ�ϵͳ�у�inode������ʾ�ļ����ļ�ŀ¼(����ϵͳ��˵��ŀ¼��һ��������ļ�)��inode��Ԫ�ذ������ࣺ1.
metadata���������ļ���״̬�������дȩ�ޡ�2. ���ڱ����ļ����ݵ����ݶρ�
ÿ��inode����һ���ر�ĺ�������ψһʶ���ļ�����inode�ĺ��������ڸñ�ż����ϡ����ں˲���/usr/bin/emacsϊ��������inodes�������ļ�ϵͳ��ŀ¼�ṹ���ӹ�inode��ʼ����(����ŀ¼��/��)����ŀ¼ʹ��һ��inode��ʾ��inode�����ݶ�û����ͨ�����ݣ�ֻ�����˸�ŀ¼���һщ�ļ�/ŀ¼���щ����ա�ʾ�ļ�������ŀ¼��ÿ������������֣�1.
��һ�����������ڵ�inode��� 2. �ļ���ŀ¼��
����ɨ���inode����������ֱ���ҵ�һ����ϊ��usr�����������ŀ¼usr��inode��ͨ����usr��
inode����ҵ�������inode���ظ����ϲ��裬������ϊ��bin���������ȼ������������ġ�bin����ӧ��inode���������֡�emacs�����������ص�inode��ʾһ���ļ�������һ��ŀ¼�����һ��inode���ļ����ݲ�ͬ��֮ǰ��ǰ����ÿ������ʾ��һ��ŀ¼��������������ŀ¼���ļ��嵥����emacs�ļ�������inode���������ݶα������ļ���ʵ�����ݡ�
������vfs����ij���ļ��ij�������������һ������ϸ���ϻ�����щ���������ϊƶ�����ļ���һ�������ij��������뻺����ٲ��ҡ�

ͨ��inode���ʋ���ij���ļ�
�豸����
������ͨ������ָ��������(input)�����(output)���������i/o��ʵ�������i/o�ں˱��봦����������һ��������բ�ͬ���豸���ͳ��ò�ͬ�ķ�����ѱַӳ�����ڶ����ں˱���ϊ�û�ӧ�ó����ϵͳ�����ṩ������ͬ�豸�ķ���������ҫʹ��һ��ͳһ�ļ�����ȷ���������ı�̹������ͱ�֤��ʹӳ��������ͬӧ�ó���ҳ�ܻ��ཻ�����������û��ռ���ҫ֪�����ں�������щ�豸��
������ͨ�ŵij㼶��ϵ���£�

�豸ͨ�ų㼶ͼ
�ⲿ�豸���ͨ��������cpu���ӣ�ϵͳ������ֹһ�����ߣ��������ߵļ��ϡ��ںܶ�pc����а�������ͨ��һ��bridge������pci���ߡ�ijщ��������usb���ܵ���������ʹ�ã���ҫͨ��һ��ϵͳ���߽����ݴ��ݸ�����������ͼ��ʾ��ͬ��������������ӵ�ϵͳ�ġ�

ϵͳ��������ͼ
ϵͳ�����轻����ҫ�����·�ʽ��
i/o�˿ڣ�ʹ��i/o�˿�ͨ�ŵ�����£��ں�ͨ��һ��i/o�������������ݣ�ÿ�������豸��ψһ�ķ˿ںţ��ҽ�����ת����ϵͳ���ŵ�ӳ������һ���ɴ����������ĵ����������ַ�ռ������������е�i/o��ַ��
i/o��ַ�ռ䲢�����ǻ���ͨ��ϵͳ�ڴ���������ǵ��˿��ܹ�ӳ�䵽�ڴ��у��������������⡣
�˿��в�ͬ�����͡�һщ��ֻ���ģ�һщ��ֻд�ģ�һ������������ǿ���˫������ģ������ܹ��ڴ������������˫����
��ia-32�ܹ���ϵ�у��˿ڵĵ�ַ�ռ������2^16����ͬ��8λ��ַ����щ��ַ����ͨ����0x0��0xffffh�����ψһʶ��ÿ���˿ڶ���һ���豸������������߿���û��ʹ�ã�������費�ܹ���һ���˿ڡ��ܶ�����£���������ʹ��8λ�dz����õģ��������ԭ���խ�����������8λ�˿ڰ�ϊһ��16λ�ķ˿ڡ�����������16λ�˿��ܹ�������һ��32λ�ķ˿ڣ�����������ͨ����װ��������������������
��ͬ������������ʵ�ֲ����˿�ʱ������ͬ���ں˱����ṩһ�����ʵij���㣬����outb(дһ���ֽ�)��outw(дһ����)��inb(��һ���ֽ�)��щ����������������˿ڡ�
i/o�ڴ�ӳ�䣺�����ܹ������ram�ڴ�һ��ѱַ�����豸����˴������ṩ�˽������ӧ��i/o�˿�ӳ�䵽�ڴ��у����������������ͨ�ڴ�һ�������豸�ˡ������կ�ʹ�������ļ��ƣ�pciҳ����ͨ��ӳ���i/o��ַѱַ��
ϊ��ʵ���ڴ�ӳ�䣬i/o�˿ڱ������ȱ�ӳ�䵽��ͨϵͳ�ڴ���(ʹ�ô��������еĺ���)����ϊƽ̨���ʵ�ַ�ʽ����ƚθ������ں��ṩ��һ���������ӳ���ȥӳ��i/o����
������η������裬ʲôʱ��ϵͳ��֪���ƿ����������ݿ��է��ʣ���ҫͨ�����ַ�ʽ����ѯ���жϡ�
��ѯ�����եط��ʲ�ѯ�豸�ƿ������õ����ݣ�����у����ȡ���ݡ����ַ�����ҫ���������豸û�����ݵ������ҳ����ȥ�����豸���˷���cpuʱ��ƭ��
��һ�ַ�ʽ���жϣ����������������ij�����������˺�����֪ͨcpu���жϵ����ȼ���ߣ����ж�cpu�ĵ�ǰ�������с�ÿ��cpu���ṩ���ж���(�ɱ���ͬ���豸����)��ÿ���ж���ψһ���жϻ�ʶ���ں�ϊÿ��ʹ�õ��ж��ṩһ������(isr��interrupt
service routine�����жϸ�����cpu���õĵ�������)���жϱ���ҳ�����������ȼ���
�жϻ������ͨ��ϵͳ�������������������ÿ��ը��ں˻���ӱ�һ��ӧ�ó���ʹ�õ�ʱ���������һ���жϡ�ʹ���ж�ȷ��ϵͳֻ����������ҫ�����������ʱ��ż�֪ͨ����������ч�����ч�ʡ�
ͨ�����߿����豸���������е��豸����ֱ��ͨ��i/o���ѱַ�����ģ��ܶ��������ͨ��ij������ϵͳ��
�������е��豸���ͷ���ֱ�ӹҽ������е�����ϵͳ�ϣ�����ӳ�̹ҵ�scsi�ӿ��ϣ����կ�������(�կ����թҵ�pci������)��ӳ�̱���ͨ��ide��ӹҵ�pci�����ϡ�
�������Ϳɷ�ϊϵͳ���ߺ���չ���ߡ�ӳ���ϵ�ʵ�ֲ����ں���˵������ҫ��ֻ�����ߺ������ŵ�������α�ѱַ����ء�����ϵͳ������˵������pci���ߣ�i/o�����ڴ�ӳ������������ͨ�ţ�ҳ���ں������ŵ��豸ͨ�š��ں˻��ṩ��һщ����豸�������������ߺ�����������ʿ��õ��豸�б���ʹ��ͳһ�ĸ�ʽ��д������ϣ��
��չ��������usb��scsiͨ���������������э���븽�ŵ��豸���������ݺ�����ں�ͨ��i/o�����ڴ�ӳ����������ͨ�ţ�ͨ��ƽ̨�صĺ�����ʹ�����븽�ŵ��豸ͨ�š�
�����߸��ŵ��豸ͨ�ų�һ����ҫͨ�����ں˿ռ���������у���ijщ�����ҳ����ͨ���û��ռ�ʵ�֡�һ����ҫ��������scsi
writer��ͨ��cdrecord������ѱַ��������߲�������ҫ��scsi������ں˵i�����ͨ��scsi���߽�����͵���ӧ���豸�������ͻظ��豸�����ص���ϣ��
���豸(block)���ַ��豸(character)��3������������ͬ��
���豸�е������ܹ����κε���������ַ��豸����ҳû���ҫ��
���豸���ݴ����ʱ������ʹ�ù̶���с�ŀ顣��ʹֻ����һ���ֽڵ�����£��豸����ҳ���ǵ��豸��ȡһ�������ŀ顣�෴���ַ��豸�ܹ����ص����ֽڡ�
��д���豸��ʹ�û��档���������棬���ݻ������ڴ��у��ܹ�����ҫ��ʱ�����·��ʡ�д�������棬ҳ�ᱻ���棬��ʱд���豸��ʹ�û�������ַ��豸(�������)��˵��������ÿ���������뱻�ɿ��ؽ������豸��
��������ĸ������һ��ָ����с���ֽ����у����ڱ������ں˺��豸�䴫������ݣ���ĵ�с���ա����á������ǹ̶���с�ģ��ܱ��豸�������с��������������һ�����������������с����������������
����
linux��������ϵͳϊ�������ķ�չ�ṩ�˼�ʵ�ļ���������ģ�ͻ���iso��osiģ�ͣ�����ͼ�ұ벿�֡����ھ���ӧ���у����������ӧ�㼶����լ�ģ�ͣ���ͼ��벿��ϊlinux���õ�tcp/ip�ο�ģ�͡�(���ڽ���linux���粿�ֵ����ϱƚ϶࣬�ڱ�����ֻ�դ�ij㼶���ܣ���չ��˵����)

����ģ��
host-to-host��(physical layer��data link layer�����������������·��)�������ݴ�һ����������䵽��һ̨���������һ�㴦������������ʵĵ����ͱ�������ԣ�ҳ����������ֳɹ̶���с������֡���ڴ��䡣�������թ���һ������·�ߣ�����������(������)������һ��ψһ��id(��mac��ַ)�����֡����ں˵ľƕȣ���һ����ͨ���������豸����ʵ�ֵġ�
osiģ�͵��������tcp/ipģ���г�ϊ����㣬�����ʹ�����еļ����֮���ܽ������ݣ�����щ�������һ����ֱ�������ġ�
����ͼ��a��b֮�������ϲ�û��ֱ������������ҳû��ֱ�ӵ����ݽ�����������������ϊ�����и�����֮��ͨ���ҵ�·�ɡ�

�������ӵĵ���
�����ҳ����ҫ����i��ֳ�ָ���ĵ�с����ϊ���ڴ���·����ÿ������֧�ֵ��������ݰ���с���ܲ�һ�����ڴ���ʱ�����������ָ�ɲ�ͬ�i����ڽ��ն��ٱ���ϡ�
�����ϊ�����еĵ��է�����ψһ�������ַ�ա������ܻ���ͨ��(��ͬ��ӳ����mac��ַ����ϊ�������������������)���ڻ������у��������ip������ɣ���v4��v6�汾��
�����������ǹ淶���������ӵĵ��������е�ӧ�ó���֮������ݴ��䡣������̨�����ϵŀͻ��˺ͷ���˳�����tcp��udp���ӣ�ͨ���˿ں���ʶ��ͨ�ŵ�ӧ�ó�������˿ں�80����web
server��������ŀͻ��˱��뽫�����͵�����˿�����ȡ��ҫ�����ݡ����ͻ���ҳ��ҫ��һ��ψһ�ķ˿ں��ա�web
server�ܽ��ظ���������
��һ�㻹����ϊ���ݵĵ����ṩһ���ɿ�������(tcp�����)��
tcp/ipģ���е�ӧ�ò���osiģ���а���(session�㣬չ�ֲ㣬ӧ�ò�)����ͨ������������ӧ��֮�佨����������һ�㸺��ʵ�����ݵĵ��䡣����web
server�����ŀͻ��˴���ʱ��э������ݣ���ͬ��mail server�����ŀͻ���֮�䡣
�����������э����rfc(request for comments)�ж��塣
����ʵ�ֲַ�ģ�ͣ��ں˶�������ʵ������tcp/ip�ο�ģ�͡�����ͨ��c����ʵ�ֵģ�ÿ����ֻ�ܺ��������²�ͨ�ţ������ĺô��ǿ��խ���ͬ��э��ʹ�����ƽ�ϡ�����ͼ��ʾ��

����ʵ�ֲַ�ͼ
|