2002년 05월 13일
TCP 개념 잡기
TCP
Data Packet의 전송은
예로 송신측에서 수신측으로 약 5000byte를 SEND하면 내부적으로 TCP layer는 OS의 MTU 크기(약1500byte)라는 단위로 그 Packet을 잘라질 것이고,
또한 나눠진 각 Data들에게 순서와 정보를 부여하기 위해 각 Data에 TCP header와 IP layer에서는 그 Data의 Destination IP정보가 담긴 IP header를 붙을것입니다.
물리적인 layer에서도 또한 ethernet header를 붙입니다.
ethernet header라는 것은 각 LAN CARD 마다 가지고 있는 물리적 주소 MAC address라는 정보가 들어가게 됩니다.
실제로 물리적 layer에서는 Local network상은 IP로 Destination PC를 찾는것이 아니라 MAC Address로 찾는다고 생각하셔도 됩니다.
이후 Routing Table(PC에서는 command prompt 상에서 route print혹은 netstat -nr)을 참조하여 아마 Subnet 확인이라고 해야 할겁니다.
일단 Destination IP가 정해지면 PC는 자신의 subnet과 bit negation 한 후 Local Network인지 Remote Network인지 확인한 후
Local이면 ARP Request(프로토콜)로 라우터에서 얻은 해당 IP의 MAC Address로 보내고 Remote이면 라우터(Gateway)의 MAC Address으로 보내줍니다.
라우터(Gateway)에서도 Packet을 ip layer까지 decapsulation 하고 다시 encapsulation 시킵니다.
이제 Gateway(라우터)들 통신을 보겠습니다.
라우터는 Next Hop(다음 라우터)를 Direct connected Network과 Static Route, Dynamic Route에 결정된 Next Hop을 참조합니다.
211.244.23.10라는 PC로 Data가 전송시 Source PC는 Gateway(라우터)참조하여 Local이면 ARP Request(프로토콜)로 라우터에서 얻은 해당 IP의 MAC Address로 보내고 Remote이면 라우터(Gateway)의 MAC Address으로 보내줍니다.
Router(Gateway)에서는 그 Ethernet Packet을 다시 decapsulation해서 IP를 확인합니다.
Router는 각 Destination으로의 Best Route를 알고 있습니다. 이를 Routing Table에 저장하고 있지요.
Next Hop이 WAN(PPP,HDLC등)으로 연결되었을 경우에는 ARP 없이 IP 주소로 직접보내줍니다.
Frame-relay의 경우 InverseARP 혹은 Fram-relay Map에 의해 결정된 Next Hop으로 보내줍니다.
그러나 Next Hop이 LAN 상에 있일 경우에는 Next Hop의 MAC을 ARP로 알아낸 후에 보내줍니다.
이때는 Router나 PC나 차이가 없습니다.
Packet을 받은 Router(목적지) Packet을 decapsulation 할것이고, IP header를 참조하여 ARP Table과 대조할 것입니다.
Router는 ARP Table을 참조하여 IP와 일치한 MAC Address PC로 Packet을 encapsulation 후에 보내줍니다.
Router가 서로 Ethernet 등으로 연결되있다면 Router에서 211.244.23.10 의 MAC Address를 찾는것이 아니라 순차적으로 211.244.23.10의 PC가 속해있는 Router의 MAC Address를 찾고 Packet을 받은 Router는 Packet을 211.244.23.10 PC에 MAC Address로 보내줍니다.
그렇지 않을 경우에는(보통은 전용선이죠?) PPP 이기 때문에 바로 Next Hop으로 보내버립니다. 경로상의 마지막 Router(목적지와 같은 Segment상에 존재하는)에서는 위와 같이 되지요.
또한 Router는 Interface마다 IP를 가지고 있다고 생각하시면 됩니다.
최소 두개가 존재하며 경우에 따라서는 수십, 수백개 까지도 가능합니다. Interface만 충분하다면요. ^^
게이트웨이 주소는 자신이 아닌 상대방의 주소, 즉 Routing Table에 존재하는 Next Hop의 주소겠지요?
자기 인터페이스와 마주보고 붙어있는 Router의 주소라고 생각하시면 되겠습니다.
ARP는 IP를 MAC과 맞추는 작업을 합니다만 MAC은 LAN상에만 존재합니다.
실제로 Router의 Serial Interface를 보시면 MAC이 없음을 확인하실 수 있습니다.
또한 ARP는 Broadcast 기반으로 작동하므로 Router에서는 좀 다르지 않을까라고 느끼실 것입니다.
/* 추가 PING */
핑은 ICMP중 Echo Request와 Echo Reply의 조합입니다. 대표적인 ICMP 응용이라고 할 수 있지요.
ICMP는 IP 전송시 에러뿐 아니라 각종 정보를 알려주는 역할을 합니다. RFC792 를 참조하세요.
255가지의 메시지 종류가 있습니다만 크게 4가지로 나눌 수 있습니다.
1. 오류 - 도달불가 ; Unreachable, 혼잡 ; Congestion
2. 경로 재설정 ; Redirect
3. 시간초과 ; Timeout ; TTL
4. 문제해결지원 ; ex:) ping
응용으로는 유명한 Ping, Tracert 등이 있으며
그밖에도 IRDP(Sun에서는 DISC라고도 합니다.)라는 Gateway 설정 메시지가 있습니다.
ICMP 에러 타입중에는 라우팅 경로 재설정이 있거든여 가까운 라우팅 경로가 생길때에 보낸다는 ICMP Redirect라는 기능입니다.
Router의 Routing Table은 수동, 혹은 Routing Protocol에 의해서 변경이 됩니다. ICMP Message로는 변경되지 않습니다.
ICMP Message가 Routing Protocol의 Trigger Update를 유발시킬 수는 있겠지요.
ICMP Redirect는 Packet Source에게 더 좋은 경로가 있으니 다음부터는 그쪽으로 보내라는 메시지입니다.
즉, 같은 Segment 상에 더 낳은 Gateway가 있을 경우 이를 알려주는 기능을 합니다.
Cisco홈 에 가시면 Redirect Message가 언제 발생하는지 참조하실 자료가 있습니다.
그렇다면 ICMP는 라우터와 라우터들끼리의 프로토콜도 가능한거가요? 라는 의문에서는
Router들끼리도 이용되어지지만은 보통 End to End 단에서 이루어집니다.
물론 Router가 Packet의 Source라면 영향을 받겠지요. ^^
/* ARP 추가 */
ARP는 Address Resolution Protocol 의 약자로 IP 주소에 대한 MAC 주소를 알려고 할때 이용하는
프로토콜입니다. 그 반대는 RARP 이구요.
OSI 7 계층에서의 위치는 보통 2계층(data link)에서 3계층(network) 사이에 있다고 보시면 되구요.
보통 3계층에 포함시킵니다.
ARP 테이블은 각각의 IP에 대한 MAC 주소를 매핑시켜 놓은 형태로 아래와 같구요.
Arp Table
203.239.110.10 00:00:1F:23:AC:7B
203.239.110.20 00:00:1F:23:AD:7C
ARP가 작동하는 방식은 알고자 하는 MAC 주소에 대한 IP를 포함하는 패킷을 네트워크상에 브로드캐스트(Broadcast)하면, 그 패킷을 받은 노드들은 그 IP주소가 자신의 주소인지 확인하고 아니면 패킷을 버리고
맞으면 자신의 MAC 주소를 포함하는 패킷을 유니캐스트(Unicast)로 해당 노드에 직접 보내게 됩니다.
우리가 일반적으로 IP 주소로 해당 컴퓨터를 찾아간다고 생각하는데요.
ARP란 놈이 상위 계층에서 내려오는 패킷의 IP 주소를 보고 위에서 말한 내용대로 그에 해당하는 MAC 주소를 찾아서 패킷에 포함시켜 보내게 됩니다.
그러니까 하나의 네트워크상에서는 실질적으로 MAC 주소를 이용해서 컴퓨터를 찾아간다고 하는게 더 정확할겁니다. (맞나? -,,-)
라우터에도 ARP 테이블이 있어서 라우터까지 온 패킷의 IP에 해당하는 MAC 주소를 ARP 테이블에서 찾아서 있으면 그 MAC 주소에 해당하는 컴퓨터로 패킷을 보내게 되고 없으면 ARP 패킷을 네트워크상에 뿌린후 MAC주소를 알아내서 자신의 ARP 테이블을 갱신하고 패킷을 보내게 됩니다.
그리고 ARP가 꼭 TCP로 연결되는거는 아니구요.. 왜냐하면 TCP가 ARP보다 상위 계층이기 때문에 TCP로 하던 UDP로 하는거는 자기 마음이구요.. 랜카드는 2계층으로 보시면 될겁니다. 컴퓨터는.. --;;;
- 네트워크에 그렇게 관심이 많았던 2001년 자료를 찾다가 끝내는 라우터 커뮤니티를 통해 얻게된 답변들을 모아 보관해 둔 것이다. -
- 드레 -
Data Packet의 전송은
예로 송신측에서 수신측으로 약 5000byte를 SEND하면 내부적으로 TCP layer는 OS의 MTU 크기(약1500byte)라는 단위로 그 Packet을 잘라질 것이고,
또한 나눠진 각 Data들에게 순서와 정보를 부여하기 위해 각 Data에 TCP header와 IP layer에서는 그 Data의 Destination IP정보가 담긴 IP header를 붙을것입니다.
물리적인 layer에서도 또한 ethernet header를 붙입니다.
ethernet header라는 것은 각 LAN CARD 마다 가지고 있는 물리적 주소 MAC address라는 정보가 들어가게 됩니다.
실제로 물리적 layer에서는 Local network상은 IP로 Destination PC를 찾는것이 아니라 MAC Address로 찾는다고 생각하셔도 됩니다.
이후 Routing Table(PC에서는 command prompt 상에서 route print혹은 netstat -nr)을 참조하여 아마 Subnet 확인이라고 해야 할겁니다.
일단 Destination IP가 정해지면 PC는 자신의 subnet과 bit negation 한 후 Local Network인지 Remote Network인지 확인한 후
Local이면 ARP Request(프로토콜)로 라우터에서 얻은 해당 IP의 MAC Address로 보내고 Remote이면 라우터(Gateway)의 MAC Address으로 보내줍니다.
라우터(Gateway)에서도 Packet을 ip layer까지 decapsulation 하고 다시 encapsulation 시킵니다.
이제 Gateway(라우터)들 통신을 보겠습니다.
라우터는 Next Hop(다음 라우터)를 Direct connected Network과 Static Route, Dynamic Route에 결정된 Next Hop을 참조합니다.
211.244.23.10라는 PC로 Data가 전송시 Source PC는 Gateway(라우터)참조하여 Local이면 ARP Request(프로토콜)로 라우터에서 얻은 해당 IP의 MAC Address로 보내고 Remote이면 라우터(Gateway)의 MAC Address으로 보내줍니다.
Router(Gateway)에서는 그 Ethernet Packet을 다시 decapsulation해서 IP를 확인합니다.
Router는 각 Destination으로의 Best Route를 알고 있습니다. 이를 Routing Table에 저장하고 있지요.
Next Hop이 WAN(PPP,HDLC등)으로 연결되었을 경우에는 ARP 없이 IP 주소로 직접보내줍니다.
Frame-relay의 경우 InverseARP 혹은 Fram-relay Map에 의해 결정된 Next Hop으로 보내줍니다.
그러나 Next Hop이 LAN 상에 있일 경우에는 Next Hop의 MAC을 ARP로 알아낸 후에 보내줍니다.
이때는 Router나 PC나 차이가 없습니다.
Packet을 받은 Router(목적지) Packet을 decapsulation 할것이고, IP header를 참조하여 ARP Table과 대조할 것입니다.
Router는 ARP Table을 참조하여 IP와 일치한 MAC Address PC로 Packet을 encapsulation 후에 보내줍니다.
Router가 서로 Ethernet 등으로 연결되있다면 Router에서 211.244.23.10 의 MAC Address를 찾는것이 아니라 순차적으로 211.244.23.10의 PC가 속해있는 Router의 MAC Address를 찾고 Packet을 받은 Router는 Packet을 211.244.23.10 PC에 MAC Address로 보내줍니다.
그렇지 않을 경우에는(보통은 전용선이죠?) PPP 이기 때문에 바로 Next Hop으로 보내버립니다. 경로상의 마지막 Router(목적지와 같은 Segment상에 존재하는)에서는 위와 같이 되지요.
또한 Router는 Interface마다 IP를 가지고 있다고 생각하시면 됩니다.
최소 두개가 존재하며 경우에 따라서는 수십, 수백개 까지도 가능합니다. Interface만 충분하다면요. ^^
게이트웨이 주소는 자신이 아닌 상대방의 주소, 즉 Routing Table에 존재하는 Next Hop의 주소겠지요?
자기 인터페이스와 마주보고 붙어있는 Router의 주소라고 생각하시면 되겠습니다.
ARP는 IP를 MAC과 맞추는 작업을 합니다만 MAC은 LAN상에만 존재합니다.
실제로 Router의 Serial Interface를 보시면 MAC이 없음을 확인하실 수 있습니다.
또한 ARP는 Broadcast 기반으로 작동하므로 Router에서는 좀 다르지 않을까라고 느끼실 것입니다.
/* 추가 PING */
핑은 ICMP중 Echo Request와 Echo Reply의 조합입니다. 대표적인 ICMP 응용이라고 할 수 있지요.
ICMP는 IP 전송시 에러뿐 아니라 각종 정보를 알려주는 역할을 합니다. RFC792 를 참조하세요.
255가지의 메시지 종류가 있습니다만 크게 4가지로 나눌 수 있습니다.
1. 오류 - 도달불가 ; Unreachable, 혼잡 ; Congestion
2. 경로 재설정 ; Redirect
3. 시간초과 ; Timeout ; TTL
4. 문제해결지원 ; ex:) ping
응용으로는 유명한 Ping, Tracert 등이 있으며
그밖에도 IRDP(Sun에서는 DISC라고도 합니다.)라는 Gateway 설정 메시지가 있습니다.
ICMP 에러 타입중에는 라우팅 경로 재설정이 있거든여 가까운 라우팅 경로가 생길때에 보낸다는 ICMP Redirect라는 기능입니다.
Router의 Routing Table은 수동, 혹은 Routing Protocol에 의해서 변경이 됩니다. ICMP Message로는 변경되지 않습니다.
ICMP Message가 Routing Protocol의 Trigger Update를 유발시킬 수는 있겠지요.
ICMP Redirect는 Packet Source에게 더 좋은 경로가 있으니 다음부터는 그쪽으로 보내라는 메시지입니다.
즉, 같은 Segment 상에 더 낳은 Gateway가 있을 경우 이를 알려주는 기능을 합니다.
Cisco홈 에 가시면 Redirect Message가 언제 발생하는지 참조하실 자료가 있습니다.
그렇다면 ICMP는 라우터와 라우터들끼리의 프로토콜도 가능한거가요? 라는 의문에서는
Router들끼리도 이용되어지지만은 보통 End to End 단에서 이루어집니다.
물론 Router가 Packet의 Source라면 영향을 받겠지요. ^^
/* ARP 추가 */
ARP는 Address Resolution Protocol 의 약자로 IP 주소에 대한 MAC 주소를 알려고 할때 이용하는
프로토콜입니다. 그 반대는 RARP 이구요.
OSI 7 계층에서의 위치는 보통 2계층(data link)에서 3계층(network) 사이에 있다고 보시면 되구요.
보통 3계층에 포함시킵니다.
ARP 테이블은 각각의 IP에 대한 MAC 주소를 매핑시켜 놓은 형태로 아래와 같구요.
Arp Table
203.239.110.10 00:00:1F:23:AC:7B
203.239.110.20 00:00:1F:23:AD:7C
ARP가 작동하는 방식은 알고자 하는 MAC 주소에 대한 IP를 포함하는 패킷을 네트워크상에 브로드캐스트(Broadcast)하면, 그 패킷을 받은 노드들은 그 IP주소가 자신의 주소인지 확인하고 아니면 패킷을 버리고
맞으면 자신의 MAC 주소를 포함하는 패킷을 유니캐스트(Unicast)로 해당 노드에 직접 보내게 됩니다.
우리가 일반적으로 IP 주소로 해당 컴퓨터를 찾아간다고 생각하는데요.
ARP란 놈이 상위 계층에서 내려오는 패킷의 IP 주소를 보고 위에서 말한 내용대로 그에 해당하는 MAC 주소를 찾아서 패킷에 포함시켜 보내게 됩니다.
그러니까 하나의 네트워크상에서는 실질적으로 MAC 주소를 이용해서 컴퓨터를 찾아간다고 하는게 더 정확할겁니다. (맞나? -,,-)
라우터에도 ARP 테이블이 있어서 라우터까지 온 패킷의 IP에 해당하는 MAC 주소를 ARP 테이블에서 찾아서 있으면 그 MAC 주소에 해당하는 컴퓨터로 패킷을 보내게 되고 없으면 ARP 패킷을 네트워크상에 뿌린후 MAC주소를 알아내서 자신의 ARP 테이블을 갱신하고 패킷을 보내게 됩니다.
그리고 ARP가 꼭 TCP로 연결되는거는 아니구요.. 왜냐하면 TCP가 ARP보다 상위 계층이기 때문에 TCP로 하던 UDP로 하는거는 자기 마음이구요.. 랜카드는 2계층으로 보시면 될겁니다. 컴퓨터는.. --;;;
- 네트워크에 그렇게 관심이 많았던 2001년 자료를 찾다가 끝내는 라우터 커뮤니티를 통해 얻게된 답변들을 모아 보관해 둔 것이다. -
- 드레 -
# by | 2002/05/13 12:36 | 시간.. | 트랙백(1) | 덧글(7)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : [펌]TCP 개념 잡기
TCP 개념 잡기 ...more