LINUX.ORG.RU

История изменений

Исправление novoxudonoser, (текущая версия) :

Истина дальше чем мне показалось изначально

тут как посмотреть… очень диалектичненько получается…

что происходит в описанной тобой схеме (NAT):

HostA (192.168.1.100) –----> GateB (192.168.1.1, 90.90.90.90) –-----> ServerC (80.80.80.80)
что происходит с IP пакетом:
открытие соединения
         ----------->                   ----------->
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 192.168.1.100          |  src: 90.90.90.90
              |  dst: 80.80.80.80            |  dst: 80.80.80.80
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 10000             |  src port: 10000
              |  dst port: 80                |  dst port: 80 
              |  seq num : 1                 |  seq num : 1
              |  ack num :                   |  ack num : 
              |  ...                         |  ...
              |  data: HTTP 1.1\r\n...       |  data: HTTP 1.1\r\n...
получение данных
         <-----------                   <-----------
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 80.80.80.80            |  src: 80.80.80.80
              |  dst: 192.168.1.100          |  dst: 90.90.90.90
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 80                |  src port: 80
              |  dst port: 10000             |  dst port: 10000 
              |  seq num :                   |  seq num : 
              |  ack num :  1                |  ack num : 1
              |  ...                         |  ...
              |  data: <html>text...         |  data: <html>text...
... много много пакетов
         <-----------                   <-----------
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 80.80.80.80            |  src: 80.80.80.80
              |  dst: 192.168.1.100          |  dst: 90.90.90.90
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 80                |  src port: 80
              |  dst port: 10000             |  dst port: 10000 
              |  seq num :                   |  seq num : 
              |  ack num :  100              |  ack num : 100
              |  ...                         |  ...
              |  data: ...text<\html>EOF     |  data: ...text<\html>EOF

что нужно мне (tcp termination proxy):

открытие соединения
         ----------->                   ----------->
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 192.168.1.100          |  src: 90.90.90.90
              |  dst: 80.80.80.80            |  dst: 80.80.80.80
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 10000             |  src port: 99999
              |  dst port: 80                |  dst port: 80 
              |  seq num : 1                 |  seq num : 1
              |  ack num :                   |  ack num : 
              |  ...                         |  ...
              |  data: HTTP 1.1\r\n...       |  data: HTTP 1.1\r\n...
получение данных
                                        <-----------
                                             |IP HEADER
                                             |  ...
                                             |  src: 80.80.80.80
                                             |  dst: 90.90.90.90
                                             |IP CONTENT
                                             |  content type - tcp  
                                             |  src port: 80
                                             |  dst port: 99999 
                                             |  seq num : 
                                             |  ack num : 1
                                             |  ...
                                             |  data: <html>text...
... много много пакетов
                                        <-----------
                                             |IP HEADER
                                             |  ...
                                             |  src: 80.80.80.80
                                             |  dst: 90.90.90.90
                                             |IP CONTENT
                                             |  content type - tcp  
                                             |  src port: 80
                                             |  dst port: 99999 
                                             |  seq num : 
                                             |  ack num : 100
                                             |  ...
                                             |  data: ...text<\html>EOF

отсылка их в HostA
         <-----------                   
              |IP HEADER                     
              |  ...                         
              |  src: 80.80.80.80            
              |  dst: 192.168.1.100          
              |IP CONTENT                    
              |  content type - tcp          
              |  src port: 80                
              |  dst port: 10000             
              |  seq num :                   
              |  ack num :  1              
              |  ...                         
              |  data: <html>text...
...
         <-----------                   
              |IP HEADER                     
              |  ...                         
              |  src: 80.80.80.80           
              |  dst: 192.168.1.100          
              |IP CONTENT                    
              |  content type - tcp          
              |  src port: 80                
              |  dst port: 10000             
              |  seq num :                   
              |  ack num :  100              
              |  ...                         
              |  data: ...text<\html>EOF     

я намеренно опустил SYN ACK взаимодействие и отправил данные сразу в первом пакете также значения seq num, ack num не верны но суть передают в данном примере сначала идет полное получение данных, только затем пересылка, это для упрощения хотя пересылка в HostA должна начинатся сразуже паралельно с дополучением данных

Исправление novoxudonoser, :

Истина дальше чем мне показалось изначально

тут как посмотреть… очень диалектичненько получается…

что происходит в описанной тобой схеме (NAT):

HostA (192.168.1.100) –----> GateB (192.168.1.1, 90.90.90.90) –-----> ServerC (80.80.80.80)
что происходит с IP пакетом:
открытие соединения
         ----------->                   ----------->
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 192.168.1.100          |  src: 90.90.90.90
              |  dst: 80.80.80.80            |  dst: 80.80.80.80
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 10000             |  src port: 10000
              |  dst port: 80                |  dst port: 80 
              |  seq num : 1                 |  seq num : 1
              |  ack num :                   |  ack num : 
              |  ...                         |  ...
              |  data: HTTP 1.1\r\n...       |  data: HTTP 1.1\r\n...
получение данных
         <-----------                   <-----------
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 80.80.80.80            |  src: 80.80.80.80
              |  dst: 192.168.1.100          |  dst: 90.90.90.90
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 80                |  src port: 80
              |  dst port: 10000             |  dst port: 10000 
              |  seq num :                   |  seq num : 
              |  ack num :  1                |  ack num : 1
              |  ...                         |  ...
              |  data: <html>text...         |  data: <html>text...
... много много пакетов
         <-----------                   <-----------
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 80.80.80.80            |  src: 80.80.80.80
              |  dst: 192.168.1.100          |  dst: 90.90.90.90
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 80                |  src port: 80
              |  dst port: 10000             |  dst port: 10000 
              |  seq num :                   |  seq num : 
              |  ack num :  100              |  ack num : 100
              |  ...                         |  ...
              |  data: ...text<\html>EOF     |  data: ...text<\html>EOF

что нужно мне (tcp termination proxy):

открытие соединения
         ----------->                   ----------->
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 192.168.1.100          |  src: 90.90.90.90
              |  dst: 80.80.80.80            |  dst: 80.80.80.80
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 10000             |  src port: 99999
              |  dst port: 80                |  dst port: 80 
              |  seq num : 1                 |  seq num : 1
              |  ack num :                   |  ack num : 
              |  ...                         |  ...
              |  data: HTTP 1.1\r\n...       |  data: HTTP 1.1\r\n...
получение данных
                                        <-----------
                                             |IP HEADER
                                             |  ...
                                             |  src: 80.80.80.80
                                             |  dst: 90.90.90.90
                                             |IP CONTENT
                                             |  content type - tcp  
                                             |  src port: 80
                                             |  dst port: 99999 
                                             |  seq num : 
                                             |  ack num : 1
                                             |  ...
                                             |  data: <html>text...
... много много пакетов
                                        <-----------
                                             |IP HEADER
                                             |  ...
                                             |  src: 80.80.80.80
                                             |  dst: 90.90.90.90
                                             |IP CONTENT
                                             |  content type - tcp  
                                             |  src port: 80
                                             |  dst port: 99999 
                                             |  seq num : 
                                             |  ack num : 1
                                             |  ...
                                             |  data: ...text<\html>EOF

отсылка их в HostA
         <-----------                   
              |IP HEADER                     
              |  ...                         
              |  src: 80.80.80.80            
              |  dst: 192.168.1.100          
              |IP CONTENT                    
              |  content type - tcp          
              |  src port: 80                
              |  dst port: 10000             
              |  seq num :                   
              |  ack num :  1              
              |  ...                         
              |  data: <html>text...
...
         <-----------                   
              |IP HEADER                     
              |  ...                         
              |  src: 80.80.80.80           
              |  dst: 192.168.1.100          
              |IP CONTENT                    
              |  content type - tcp          
              |  src port: 80                
              |  dst port: 10000             
              |  seq num :                   
              |  ack num :  100              
              |  ...                         
              |  data: ...text<\html>EOF     

я намеренно опустил SYN ACK взаимодействие и отправил данные сразу в первом пакете также значения seq num, ack num не верны но суть передают в данном примере сначала идет полное получение данных, только затем пересылка, это для упрощения хотя пересылка в HostA должна начинатся сразуже паралельно с дополучением данных

Исходная версия novoxudonoser, :

Истина дальше чем мне показалось изначально тут как посмотреть… очень диалектичненько получается…

что происходит в описанной тобой схеме (NAT):

HostA (192.168.1.100) –----> GateB (192.168.1.1, 90.90.90.90) –-----> ServerC (80.80.80.80)
что происходит с IP пакетом:
открытие соединения
         ----------->                   ----------->
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 192.168.1.100          |  src: 90.90.90.90
              |  dst: 80.80.80.80            |  dst: 80.80.80.80
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 10000             |  src port: 10000
              |  dst port: 80                |  dst port: 80 
              |  seq num : 1                 |  seq num : 1
              |  ack num :                   |  ack num : 
              |  ...                         |  ...
              |  data: HTTP 1.1\r\n...       |  data: HTTP 1.1\r\n...
получение данных
         <-----------                   <-----------
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 80.80.80.80            |  src: 80.80.80.80
              |  dst: 192.168.1.100          |  dst: 90.90.90.90
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 80                |  src port: 80
              |  dst port: 10000             |  dst port: 10000 
              |  seq num :                   |  seq num : 
              |  ack num :  1                |  ack num : 1
              |  ...                         |  ...
              |  data: <html>text...         |  data: <html>text...
... много много пакетов
         <-----------                   <-----------
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 80.80.80.80            |  src: 80.80.80.80
              |  dst: 192.168.1.100          |  dst: 90.90.90.90
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 80                |  src port: 80
              |  dst port: 10000             |  dst port: 10000 
              |  seq num :                   |  seq num : 
              |  ack num :  100              |  ack num : 100
              |  ...                         |  ...
              |  data: ...text<\html>EOF     |  data: ...text<\html>EOF

что нужно мне (tcp termination proxy):

открытие соединения
         ----------->                   ----------->
              |IP HEADER                     |IP HEADER
              |  ...                         |  ...
              |  src: 192.168.1.100          |  src: 90.90.90.90
              |  dst: 80.80.80.80            |  dst: 80.80.80.80
              |IP CONTENT                    |IP CONTENT
              |  content type - tcp          |  content type - tcp  
              |  src port: 10000             |  src port: 99999
              |  dst port: 80                |  dst port: 80 
              |  seq num : 1                 |  seq num : 1
              |  ack num :                   |  ack num : 
              |  ...                         |  ...
              |  data: HTTP 1.1\r\n...       |  data: HTTP 1.1\r\n...
получение данных
                                        <-----------
                                             |IP HEADER
                                             |  ...
                                             |  src: 80.80.80.80
                                             |  dst: 90.90.90.90
                                             |IP CONTENT
                                             |  content type - tcp  
                                             |  src port: 80
                                             |  dst port: 99999 
                                             |  seq num : 
                                             |  ack num : 1
                                             |  ...
                                             |  data: <html>text...
... много много пакетов
                                        <-----------
                                             |IP HEADER
                                             |  ...
                                             |  src: 80.80.80.80
                                             |  dst: 90.90.90.90
                                             |IP CONTENT
                                             |  content type - tcp  
                                             |  src port: 80
                                             |  dst port: 99999 
                                             |  seq num : 
                                             |  ack num : 1
                                             |  ...
                                             |  data: ...text<\html>EOF

отсылка их в HostA
         <-----------                   
              |IP HEADER                     
              |  ...                         
              |  src: 80.80.80.80            
              |  dst: 192.168.1.100          
              |IP CONTENT                    
              |  content type - tcp          
              |  src port: 80                
              |  dst port: 10000             
              |  seq num :                   
              |  ack num :  1              
              |  ...                         
              |  data: <html>text...
...
         <-----------                   
              |IP HEADER                     
              |  ...                         
              |  src: 80.80.80.80           
              |  dst: 192.168.1.100          
              |IP CONTENT                    
              |  content type - tcp          
              |  src port: 80                
              |  dst port: 10000             
              |  seq num :                   
              |  ack num :  100              
              |  ...                         
              |  data: ...text<\html>EOF     

я намеренно опустил SYN ACK взаимодействие и отправил данные сразу в первом пакете также значения seq num, ack num не верны но суть передают в данном примере сначала идет полное получение данных, только затем пересылка, это для упрощения хотя пересылка в HostA должна начинатся сразуже паралельно с дополучением данных