티스토리 뷰
이전 시간 정리
1계층을 통해서 케이블로 연결된 두 기기가 인터페이스를 통해 신호(아날로그,디지털)를 주고 받을 수 있게 되었다. 또한 2계층은 다수의 연결된 컴퓨터에서 통신을 할때 충돌이 일어나지 않게 하는 역할을 한다. 따라서 소규모 랜을 구축 할 수 있다.
즉, 2계층 까지만 해도 어느정도 규모의 네트워크를 구성할수 있다는것이다. 그럼 3계층부터는 왜 필요하지?
브로드캐스트 도메인을 구분하기위해서 필요하다. 만약 모든 네트워크가 2계층으로 구성되어 있다면 하나의 컴퓨터에서 브로드 캐스트가 일어났을때 모든 컴퓨터가 그 브로드 캐스트를 처리해야되기때문에 통신 효율이 떨어진다. 따라서, 라우터를 통해서 브로드캐스트 도메인을 분리 시켜야 한다.
2계층까지 구성하여 랜을 구축 할 수 있었다. 3계층은 2계층 서비스를 이용하여 랜과 랜을 연결하여 인터넷 서비스가 가능하게 만든다. 그렇게 하기 위해서는 주소 정보를 나타내는 아이피 주소가 추가로 필요하게 된다.
2계층에서 사용되는 맥주소는 주소 정보를 나타내지 않는다. 그렇기 때문에 서로 다른 네트워크의 호스트의 위치를 표시 할 수 없기 때문에 통신이 불가능하다.
3계층에서는 어드레싱, 라우팅 두가지 역할을 수행한다.
1. 어드레싱
어드레싱이란 아이피 주소를 할당하는것을 말한다. 클래스풀 어드레싱과 클래스리스 어드레싱 2가지 종류가 있는데, 클래스풀 어드레싱은 아이피 주소의 네트워크 비트부분을 조직의 규모에 따라서 A,B,C,D,E로 나눈것이다. A는 첫바이트, B는 앞에서 2개 바이트 등등을 네트워크를 나타내는데 사용한다. 하지만 클래스풀 어드레싱을 하게 되면 B와 C클래스 사이의 애매한 규모에서는 낭비되는 IP주소가 많기 떄문에 요즘에는 클래스리스 어드레싱을 사용한다. 클래스리스 어드레싱은 234.235.2.1/24와 같이 프리픽스길이를 아이피주소와 같이 표시함으로써 어디까지가 네트워크 비트인지를 표시한다. 즉 앞에서 24개 비트가 네트워크를 표시하는 비트라는것이다. 이렇게 아이피 주소를 표시하게 되면 저 네트워에서는 낭비되는 아이피 주소가 없을것이다.
cf) 아이피 주소는 네트워크 비트 + 호스트비트 = 총 32비트로 어떤 노드의 고유한 위치를 표시한다.
2. 라우팅
라우터는 라우팅 테이블을 갖고 있는데 라우팅 테이블에는 목적지IP주소, 다음 라우터, 인터페이스 이렇게 3가지 정보를 갖고 있다. 즉, 방금 수신한 패킷의 목적지 IP주소로 가려면 이쪽 인터페이스로 나가야해 를 결정하는것이다. 각각의 라우터가 다음 목적지를 결정함으로써 패킷을 보낼때 경로가 생성된다. 이런 패킷 전달 경로를 만드는 작업을 라우팅이라고 한다.
어떤 네트워크의 컴퓨터에서 다른 네트워크의 컴퓨터에 패킷을 보내기 위해서는 4가지 헤더 정보가 필요하다.
1. 목적지 IP주소 - 사용자가 주소창에 도메인을 입력하면 그것이 DNS서버에서 IP주소로 변환된다.
2. 목적지 MAC주소 - DNS에 의해 변환된 IP주소를 ARP를 통해 MAC주소로 한번더 변환한다.
3. 발신지 IP주소 - DHCP서버의 IP 주소 풀로부터 할당받은 IP주소를 자기 자신이 알고 있다.
4. 발신지 MAC주소 - 자신의 컴퓨터에 부착된 이더넷 카드의 맥주소를 자기 자신이 알고 있다.
여기서 목적지 MAC주소를 알기 위해서는 ARP를 수행한다고 되어 있는데 사실 이 ARP는 브로드캐스트이다. 라우터는 브로드캐스트를 차단하는 역할을 하기 때문에 다른 네트워크에 있는 컴퓨터의 맥주소를 바로 알 수는 없다.
만약, 목적지 IP주소가 내 네트워크에 있는 다른 호스트라면 바로 그 호스트의 MAC주소를 ARP를 통해 알 수 있다. 하지만, 다른 네트워크라면?? ARP 브로드 캐스트가 라우터에서 차단 되기 때문에 바로 알 수 없다. 그래서 필요한것이 디폴트 게이트웨이이다.
디폴트 게이트웨이
이것은 네트워크를 구성하는 라우터를 의미한다. 각 네트워크에는 그 네트워크를 담당하는 라우터가 존재한다. 만약 내가 보내려고 하는 컴퓨터가 다른 네트워크에 있을때 상대의 맥주소를 알기 위해서는 우선 디폴트 게이트웨이의 맥주소를 알아야 한다. 이때 ARP 브로드캐스트를 통해서 그 주소를 구한다. 목적지 IP주소와 발신지 IP주소는 패킷이 최종 전달될때까지 변하지 않지만 발신지,목적지 맥주소는 네트워크를 건너갈때마다 계속계속 변환된다.
A - 0 - B - 0 - C (0은 라우터, A,B,C는 네트워크)
A에서 C에 있는 컴퓨터에 패킷을 보낸다고 해보자. 이때 필요한 4가지 정보 중 3가지 정보는 쉽게 알 수 있다. 하지만 상대편의 맥주소를 바로 알 수는 없다. 그렇기 떄문에 A에 연결된 라우터(디폴트 게이트웨이)의 맥주소를 수신지 MAC주소로 해서 패킷을 보낸다. 그 다음에, 디폴트 게이트웨이에서는 그 다음 라우터의 맥주소를 수신지 맥주소로 자신의 맥주소를 발신지 맥주소로 해서 패킷을 전달한다. 이렇게 맥주소가 계속해서 변환되면서 패킷이 전달되어 간다.
이 사진은 내 컴퓨터에서 ipconfig를 실행한 모습이다. 이처럼 각자의 컴퓨터에는 디폴트 게이트웨이의 주소를 갖고 있다. 서브넷 마스크가 24비트 인것을 보니 C타입 클래스풀 어드레싱인것 같다. 디폴트 게이트웨이의 주소를 각 컴퓨터에서 갖고 있어야 다른 네트워크로 패킷을 내보낼수가 있다.(그래야 ARP를 통해 172.30.1.254의 아이피를 가진 친구야 너의 맥주소를 나에게 알려다오 라고 브로드 캐스트를 보낼 수 있기 때문)
'컴퓨터 공학과 졸업 > 기본 개념2' 카테고리의 다른 글
OSI 2 Layer(Data Link Layer) (0) | 2018.09.16 |
---|---|
OSI 1 Layer(Physical Layer) (0) | 2018.09.16 |
네트워크 계층(Layer3)과 트랜스포트 계층의 관계(Layer4) (0) | 2018.08.31 |
소켓 (0) | 2018.08.31 |
OSI 7Layer (0) | 2018.08.29 |
- Total
- Today
- Yesterday
- server side rendering
- promise
- useRef
- type alias
- return type
- storybook
- javascript
- Polyfill
- await
- mobx
- reactdom
- useEffect
- state
- es6
- props
- react
- Action
- async
- atomic design
- computed
- Next.js
- webpack
- typescript
- hydrate
- reducer
- Babel
- react hooks
- rendering scope
- reflow
- design system
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |