Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.29;
Скачать: CL | DM;

Вниз

Где присутствует параметр Gateway?   Найти похожие ветки 

 
Yaro ©   (2003-12-20 12:35) [0]

Предположим, что с моей машины (у которой есть статический АйПи и указанный шлюз) отправляется TCP/IP пакет. Известно, что в IP пакете присутствуют адреса отправителя и получателя, а в TCP-пакете присутствуют порты для отправителя и связующий у получателя. Причем пакет точно доходит до шлюза (вернее он его хватает) и ретранслирует, дальше - все пучком. Внимание, вопрос: Шлюз от фонаря пакеты хватает и ретранслирует или как? Если от фонаря, тогда почему, если отключить шлюз в настройках сети, то он их не хватает. Люди, подскажите откуда шлюз знает что этот пакет ему надо ретранслировать??? Хоть убей не врублюсь, хотя вру, думаю где-то это пишется, но не знаю где :)


 
Yaro ©   (2003-12-20 12:44) [1]

Да, и еще вот что... мне это не ради интереса, а правдо, знать надо где это пишется... и если у кого-нить есть путевая ссылка на описание структуры TCP/IP-пакетов, киньте мне, а то запарился... всю ночь сниффер писал. А вообще я NAT с ограничением по скорости писать собрался.


 
Verg ©   (2003-12-20 12:47) [2]

Когда нужно отправить IP пакет (а TCP пакет на данном этапе - это просто поле данных IP пакета), ядро по адресу назначения (ip_dst) получает по локальной таблице маршрутизации подходящий маршрут, т.е. интерфейс (if) через который надо отправить этот пакет и IP адрес nexthop-а (gateway). Если этот gateway == if_address (т.нз. Directly Connected Route), то пакет передается канальным уровнем этого интерфейса прямо адресату . В противном случае, пакет передается канальным уровнем этого интерфейса gateway-ю.


 
Verg ©   (2003-12-20 12:52) [3]

Т.е. Шлюз не "хватает" пакеты. Ip датаграммы передаются ему целенаправлено канальным уровнем.


 
Yaro ©   (2003-12-21 04:00) [4]

Verg, подожди, что-то я не догнал... вот структура IP-пакета:
4 бита: версия протокола IP
4 бита: количество ДВордов в заголовке IP-пакета (Size of header).
8 бит: Type of Service - назначение сего мне не совсем понятно.
16 бит: общая длинна пакета (насколько я знаю - в байтах).
16 бит: идентификация, пакеты, которые являются частью одного ПАКЕТА имеют одинаковый идентификатор (есть некоторые вопросы).
3 бита: флаги фрагментации (только два - один для обозначения фрагментированного пакета, другой - для обозначения последнего пакета, третий зарезервирован).
13 бит: смещение фрагмента (есть вопросы).
8 бит: TTL, вроде все понятно, но есть вопросы.
8 бит: Протокол верхнего уровня.
16 бит: Контрольная сумма (сумма чего? едениц в заголовке пакета или как? Если так, то входит ли сюда значения самого этого поля?).
32 бита: Ип отправителя.
32 бита: Ип получателя (конечного).
(n mod 32)=0: Опции и заполнение (вот, это-то меня и интересует больше всего!).
TotalLen-4*HeadLen: Data (правильно?)
-----
И где тут указание шлюза? Может это указано в поле Опции? или как? Если можешь - разъясни некоторые моменты по IP-пакету: моменты связаны с фрагментацией. Насколько я понял - данные могут быть раздроблены на пакеты равной длинны (кроме последнего или нет?) и параметр смещение фрагмента определяет какой кусок надо ложить первым (0), какой вторым (1), а какой третим (1). Тоесть пакеты могут передаваться через разные маршруты одному пункту назначения, тем самым обеспечивая "больше скорость", и пакеты могут приходить не только последовательно, но и вразнобой, так или нет?

И еще, функция recv возвращает колическтов принятых байт, причем один прием - один IP-пакет (фрагмент еще не готового БОЛЬШОГО пакета или он сначала компонуется полностью, а потом передается в recv?), я прав?

Да и еще, если я на сервере буду задерживать принимаемые пакеты, и тем самым добьюсь ограничения по скорости, нужно ли мне изменять поле TTL на н-секунд, а если я не буду задерживать, то мне изменять поле TTL на одну секунду в меньшую сторону или нет?

Пожалуйста, просвятите неграмоного, буду очень благодарен.
Заранее спасибо!


 
panov ©   (2003-12-21 14:13) [5]

Причем здесь пакет?

Тебе же ясно написали, что этим занимается ядро системы.


 
Yaro ©   (2003-12-22 00:48) [6]

panov:
Какой, блин, еще системы? Здесь есть только кабель, хабы и пакеты? Или это на уровне МАС организовывается, если так, то объясните каким образом...


 
panov ©   (2003-12-22 12:00) [7]

Какой, блин, еще системы? Здесь есть только кабель, хабы и пакеты? Или это на уровне МАС организовывается, если так, то объясните каким образом...

А пакет-то где изначально формируется?
Ведь не на хабе и ни сам по себе появляется.

Вот на том хосте, где он формируется, и существует таблица маршрутизации.
Операционная система определяет по сформированному адресу получателя, куда ей отправлять этот пакет - либо определенному хосту в локальную сеть, либо одному из маршрутизаторов, адреса которых известны и определены.


 
panov ©   (2003-12-22 12:01) [8]

И вообще понятие Gateway(маршрутизатор) присутствует в списках маршрутизации хоста, но никак не в пакетах.


 
Multiplayer   (2003-12-22 18:59) [9]

Yaro, я тебе щас скину на мыло статейку, OK?


 
Yaro ©   (2003-12-23 02:20) [10]

panov ->
Другими словами, можно смело на сервере ловить все пакеты, которые предназначемы всем адресам кроме (192.168.x.x и тому подобных), корректировать и передавать их по и-нетовскому соединению? и наоборот... короче свитчи сами разберутся куда пакет шуровать, я правильно понял?
Multiplayer ->
Я не против, даже за, только где статейка-то?


 
Verg ©   (2003-12-23 11:12) [11]


> Yaro © (23.12.03 02:20) [10]
> panov ->
> Другими словами, можно смело на сервере ловить все пакеты,
> которые предназначемы всем адресам кроме (192.168.x.x и
> тому подобных), корректировать и передавать их по и-нетовскому
> соединению? и наоборот... короче свитчи сами разберутся
> куда пакет шуровать, я правильно понял?


Ты вообще представляешь как происходит передача датаграм в сети, допустим, ethernet?

Про передачу пакетов TCP/IP по ethernet"у рассказывается в RFC894

Ethernet"овское железо обеспечивает сырую передачу пакетов.
Контроллер сам считает и проверяет контрольную сумму, умеет из
приходящего потока отсеивать только пакеты, предназначенные ему или
broadcast"ы, борется с коллизиями на сети. Прежде, чем отдать
пакет контроллеру, следует заполнить поля в заголовке. При приеме
контроллер сам анализирует поле адреса получателя и отбрасывает
пакеты, не имеющие к нам отношения. Обработка контрольной суммы
и коллизий пользователю не видна.

Пакет состоит из ethernet-овского заголовков, прямо за которым следуют
данные. Формат заголовка следующий:

typedef struct
{
uchar dest[6];
uchar source[6];
ushort type;
}
eth_header;

dest и source - адреса отправителя и получателя пакета, соответственно.
type - тип пакета. Нас интересует только два типа:

#define ETHER_TYPE_IP 0x800 // Пакеты IP
#define ETHER_TYPE_ARP 0x806 // Пакеты ARP

type передается, естественно, в сетевом порядке байт.

Сразу за заголовком идет блок данных - IP или ARP пакет.

Ethernet-адреса (MAC - адреса) - это некоторые 6-байтовые числа, от которых требуется уникальность. Уникальность обеспечивается производителями контроллеров.
Адрес, состоящий из одний единиц (ff:ff:ff:ff:ff:ff) - это бродкаст.
Бывают еще мультикасты, пакеты, предназначенные группе машин на сети. Для этого конктроллеру можно скормить сполдюжины адресов, на которые он будет откликаться дополнительно к его собственному адресу и бродкасту.


 
Verg ©   (2003-12-23 11:41) [12]

И еще. Читай про модель OSI.



Страницы: 1 вся ветка

Текущий архив: 2004.02.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
1-93977
ALEIIIKA
2004-02-17 10:34
2004.02.29
Excel&Delphi


8-94041
Urvin
2003-10-25 10:39
2004.02.29
Multimedia API


1-93868
Гиричев Руслан
2004-02-15 21:15
2004.02.29
Курсор - кажется что в нём такого, а...


1-93974
WASYA
2004-02-17 12:11
2004.02.29
WebBrowser работа с фремами


14-94143
heady
2004-02-02 20:40
2004.02.29
Delphi 7 Help