2010-01-07 5 views
2

www.stackoverflow.com에 대한 HTTP 응용 프로그램 요청. 이 메시지는 전송 계층으로 전달됩니다. 전송 계층은 헤더를 추가하고 패킷을 인터넷 계층으로 보냅니다. 인터넷 계층은 전송 계층에 의해 추가 된 헤더에만 액세스 할 수 있으므로 www.stackoverflow.com을 볼 수 없습니다. 그러면 인터넷 계층은이 요청 패킷의 경로를 어떻게 결정할 수 있습니까?네트워크 계층에서 패킷의 경로를 찾는 방법

응용 프로그램 계층 및 전송 계층 만 해당 필드에 대해 알고 있으므로 IP 헤더의 대상 주소 필드가 채워지는 방법은 무엇입니까? (응용 프로그램 계층은 해당 헤더의 인터넷 계층 및 전송 계층 언급 포트 번호와 아무런 상호 작용이 없습니다.)

답변

2

응용 프로그램 계층은 이미 DNS를 통해 URL에서 호스트의 IP 주소를 검색했을 것입니다. 응용 프로그램 계층의 IP 주소와 다른 데이터는 전송 계층으로 전송되어 데이터를 패킷 화 한 다음 인터넷 계층으로 전송 한 다음 전송합니다.

+0

그러나 인터넷 계층 패킷의 데이터 부분을 볼 수 없습니다. 전송 계층에서 첨부 된 헤더 만 볼 수 있습니다.그리고 전송 계층 헤더에는 목적지의 IP 주소를 언급하는 필드가 없습니다. – Mohit

+0

IP 주소가 TCP 아래의 IP 헤더에 있기 때문에 ... 내 대답을 참조하십시오. –

+1

IP 패킷은 그 안에있는 tcp 패킷과 함께 정보를 보유합니다. OSI 모델을 러시아어 인형이라고 생각하십시오. 하위 인물 위의 모든 데이터는 그 하위 레벨에 있습니다. 따라서 가장 낮은 수준은 위의 모든 수준 및 자체의 데이터로 작업하는 반면 최상위 수준은 자체적으로 작동합니다. – Recursion

1

응용 프로그램 (이 경우 브라우저)은 getaddrinfo 라이브러리 함수 또는 이와 동등한 함수를 호출하여 시스템의 확인자가 DNS에서 이름을 조회하고 일련의 IP 주소를 반환하도록 만든 것입니다.

응용 프로그램은 어떻게 든 그 중 하나를 선택했다. (표준 방법이 있지만, 표준 방법이 얼마나 좋은지), connect 시스템 호출을 사용하여 커널에서 전송 계층을 시작한 연결을 시작했다. 해당 IP 주소에 연결하는 중입니다.

결국 대상 주소와 로컬 주소를 소스로, 다음 프로토콜을 TCP로 설정하고 TCP 헤더에서 SYN 비트를 사용하여 IP 패킷을 만듭니다. 경로상의 각 라우터는 테이블을 참조하여 패킷을 전달합니다.

TCP 마법이 발생하면 SYN + ACK가 다시 발생하고 HTTP 마술이 발생하여 페이지가로드됩니다.

+0

질문을받지 못했다고 생각합니다. 수정 된 질문을 참조하십시오. – Mohit

+0

인터넷이 OSI 모델에서 실행되지 않습니다. 멋진 깔끔한 OSI 모델을 완전히 뒤섞는 크로스 레이어 링키지가 많이 있습니다. 응용 프로그램은 IP 주소를 처리하고 스택 아래로 끝까지 전달합니다. 따라서 레이어간에 깨끗한 격리가 있다는 귀하의 주장은 간단합니다. –

+0

확장하려면 다음과 같이 확장하십시오. 스택 아래로 내려갈 때 패킷 옆에 측면 채널이 있으므로 모든 레이어가 소켓 생성과 특정 패킷 전송을 유발 한 시스템 호출로 전달 된 모든 것에 액세스 할 수 있습니다 모든 IP 주소를 포함합니다. 이 데이터는 부분적으로 소켓에 저장되며 부분적으로 패킷 자체에 연결된 보조 구조에 저장됩니다. –

0

rfc791 IP - 구별이 이름, 주소, 및 경로 사이 이루어진다

어드레싱 [4]. 이름은 우리가 추구하는 것을 나타냅니다. 주소는 주소를 나타냅니다. 경로는 거기에 도착하는 방법을 나타냅니다. 인터넷 프로토콜은 주로 주소를 처리합니다. 이름에서 주소로 맵핑하는 것은 상위 레벨 (즉, 호스트 간 또는 어플리케이션) 프로토콜의 태스크입니다. 인터넷 모듈은 인터넷 주소를 로컬 인터넷 주소에 매핑합니다. 로컬 네트 어드레스로부터 루트로의 맵핑을 수행하는 것은 저레벨 (즉, 로컬 넷 또는 게이트웨이) 절차의 임무이다. 주소는 4 옥텟 (32 비트)의 고정 길이입니다.

더 읽기 : http://www.faqs.org/rfcs/rfc791.html#ixzz0buBJkVEI

그것은 높은 수준의 작업 (즉, 호스트 - 호스트 또는 응용 프로그램) 프로토콜을 주소로 이름과 매핑을 만드는 ???

+0

질문을받지 못했다고 생각합니다. 수정 된 질문을 참조하십시오. – Mohit

0

실제 IP 헤더가 주소를 얻는 방법을 알고 싶다면. 소켓이 생성 될 때 커널에서 발생합니다. 데이터가 TCP 헤더의 체크섬에 포함되어 있지만이 경우 TCP 소켓에서,

사람

데이터는 TCP 패킷에서 상속되지 않은 7 IP를 확인하세요.

관련 문제