간단하고 저렴한 Ethernet의 topology는 bus같은 것이 보편적으로 사용되어 왔지만 가운데 switch를 이용해서 star topology 형태로 구성이 되고 있습니다.
이더넷의 프레임 구조는
이 구조와 같습니다.
전송 어댑터는 IP 데이터그램을 Ethernet frame에 캡슐화합니다. 헤더는 제일 앞부분에 Preamble이 있습니다.
Preamble
- 7바이트의 10101010 패턴과 1바이트의 10101011 패턴
- 수신측과 전송측의 클럭 속도를 동기화시키기 위해 사용됨
Addresses
- 어댑터가 일치하는 목적지 주소를 가지거나 브로드캐스트 주소를 가진 프레임을 수신하면, 프레임에서 데이터를 네트워크 계층 프로토콜로 전달, 그렇지 않 으면 프레임을 폐기
Type
- 상위 계층 프로토콜을 지시. 대부분의 경우 IP이지만, Novell IPX and Apple Talk와 같은 다른 것들도 지원될 수 있음
CRC
CSMA/CD
carrier sense : 어댑터는 다른 어댑터가 전송하고 있다는 것을 감지하면 전송하지 않습니다.
collision detection : 전송하고 있는 어댑터가 다른 어댑터가 전송하고 있다는 것을 감지하면 전송을 취소합니다.
random access : 재전송을 시도하기 전에 어댑터는 랜덤한 시간동안 대기합니다.
- 어댑터는 데이터그램으로부터 프레임을 생성
- 어댑터가 채널이 idle이라고 감지하면 프레임 전송 시작, 채널이 busy 감지되면 채널이 idle이 될 때까지 대기한 후 전송
- 어댑터가 다른 전송 검출없이 전체 프레임을 전송하면, 어댑터는 그 프레임에 전송을 완료한 것
- 전송 도중 다른 전송이 감지되면, 전송을 취소하고 jam signal 전송
- 취소 후 , 어댑터는 exponential backoff 단계로 들어감 : m번재 충돌 후 어댑터는 랜덤하여 k선택, 어댑터는 k*512 bit times을 대기한 후 2로 돌아감
Jam signal
모든 다른 전송자들이 충돌을 인식하도록 함 48bits
Bit time
0.1 microsec for 10Mbps Ethernet
Exponential Backoff
재전송 시도를 측정된 현재 부하에 적응시킴 heavy load : 랜덤 대기는 더 길어질 것
first collision
K를 {0,1}로부터 선택, 지연은 K * 512 전송 시간
after second collision
K를 {0,1,2,3}으로부터 선택
after ten collisions
K를 {0,1,2,3,4, ... , 1023}으로부터 선택
Switch
Hubs
허브는 본질적으로 물리 계층 리피터임
- 한 링크에서 수신 비트는 모든 다른 링크로 출력됨
- no frame buffering
- no CSMA/CD at hub : 어댑터가 충돌을 검출
- net management functionality 제공
Interconnecting with hubs
- 백본 허브는 LAN segments를 상호 연결
- 노드 사이의 최대 거리를 확장
- 그러나 개별 세그먼트 충돌 영역들이 하나의 큰 충돌 영역이 됨
- CS에서 노드와 EE에서 노드가 동시에 전송한다면, 충돌
- 10BaseT와 100BaseT를 상호 연결할 수 없음
Link layer device
- 이더넷 프레임을 저장하고 전달
- 프레임 헤더를 조사하고 MAC 목적지 주소에 기반하여 프레임을 선택적으로 전달
- 프레임이 세그먼트로 전달될 때, 세그먼트 액세스를 위해 CSMA/CD를 사용
transparent 투명성
- 호스트는 스위치의 존재를 인식하지 않음
plug-and-play, self-learning
- 스위치는 구성될 필요가 없다
호스트는 스위치에 직접적으로 연결되고 스위치는 프레임을 버퍼링하게 됩니다. 버퍼링의 기능이 제공되며 프레임헤더를 조사해서 선택적으로 전송하게 됩니다. 그리고 스위치에서 중요한 특징 중 하나는 동시에 전송할 수 있다는 점입니다.
A에서 A', B에서 B'이 동시에 이루어질 수 있다는 중요한 특징이 있습니다. 하지만 A에서 A'으로의 전송, C에서 A'으로의 전송은 동시에 될 수 없습니다. 도착지가 똑같은 두개가 동시에는 불가능한 것입니다.
스위치의 선택적 전달
스위치는 스위치 테이블을 가지게 됩니다. MAC address와 interface 쌍으로 구성이 됩니다. 그러면 이 스위치 테이블을 만드는 것은 관리자가 설정할 필요없이 스스로 학습을 통해서 구성이 됩니다.
Switch self-learning
스위치는 어느 호스트가 어느 인터페이스를 사용하여 도달될 수 있는지를 학습(learn)
- 프레임이 수신되면, 스위치는 전송자의 위치를 알게 됨 : incoming LAN segment
- 스위치 테이블에 전송자/위치 쌍을 기록
스위치가 프레임을 수신했을 때의 동작
MAC 목적지 주소를 사용하여 스위치 테이블을 인덱싱
if 목적지에 대한 항목을 발견
then {
if 목적지가 프레임이 도착한 세그먼트가 있을 경우
then 프레임을 버림
else 지시된 인터페이스로 프레임을 전달
}
else flood (프레임이 도착한 인터페이스를 제외한 모든 인터페이스로 전달}
Interconnecting switches
switches can be connected together
스위치는 LAN을 LAN 세그먼트로 분리
스위치는 패킷을 필터(filter)
- 같은 LAN 세그먼트 프레임은 다른 세그먼트로 전달되지 않음
- 세그먼트는 충돌 도메인(collision domains)을 분리시킴
외부 인터넷으로의 연결은 라우터를 통해서 연결하고 내부의 로드들의 연결은 스위치를 이용해서 각각의 노드들을 연결하고 확대시키기 위해서 backbone switch로 확대시킵니다.
Switch vs Router
둘 다 store-and-forward 방식으로 동작
router : network-layer device
switches : link-layer devices
둘 다포워딩 테이블을 가지고 있지만
router : 라우팅 알고리즘에 의해 포워딩 계산
switches : self-learning에 의해서 스위치 케이블 구성
노트북을 연결하기 위해선 DHCP를 사용해서 동적으로 주소를 할당합니다. IP주소 뿐만 아니라 first-hop router, DNS 등등 필요합니다. DHCP를 통해서 할당이 됩니다.
DHCP 과정을 통해서 네트워크에 연결합니다. DHCP request를 보낼 것인데 응용계층에서의 DHCP request는 UDP에 의해서 동작을 합니다.
링크 계층의 프레임이 전달이 될 것이고 랜상에 Broadcast되면 이것을 수신해서 응답을 합니다.
DHCP 서버가 demuxed 과정에서 request를 수신하면 그것에 대해 응답을 합니다.
DHCP 서버가 응답으로 DHCP ACK ip주소, first-hop rrouter, ack 메시지를 응답합니다. 마찬가지로 multiplexing에서 노트북에 도착을 할 것이고 수신 프레임을 Demulx을 통해 application 계층까지 전달하면서 네트워크 설정이 완료가 됩니다. 이제 노트북은 인터넷에 접속이 된 상태고 브라우저를 실행시킵니다.
주소창에 www.google.com 이라고 입력을 할 것이고 접속하기 전에 DNS를 통해서 구글의 IP주소를 획득하는 과정이 필요합니다. 응용계층에서 DNS 프로토콜이 동작합니다.
응용계층에서 DNS쿼리 메세지가 만들어져서 하위 계층으로 전달, 링크 계층으로의 프레임이 구성되고 DNS 쿼리를 포함한 프레임을 전달할 때 실제 HOST와 Router의 MAC address가 필요하니 local network의 ARP 프로토콜에 의해서 알 수 있고 프레임 구성되어서 전달이 됩니다.
first-hoip router에 MAC address를 알기 위해 ARP query가 broadcast되고 이것에 대한 ARP reply를 보냅니다. reply 메시지를 응답하면 MAC address를 알게 되어서 프레임을 전달합니다.
TCP connection carrying HTTP
HTTP는 TCP를 사용합니다. 구글 웹서버와의 TCP 커넥션이 먼저 이루어져야합니다. 전송 계층에서 TCP 소켓과 핸드셰이킹 과정을 겪습니다. TCP segment를 보내고 구글의 웹서버가 그것에 대한 응답 TCP SYNACK를 응답하면서 노트북의 브라우저에서 TCP connection이 만들어집니다.
connection이 만들어지고 비로소 브라우저에서 구글의 웹서버로 HTTP request 메세지를 전송합니다.
따라서 브라우저에서 전송한 HTTP request에서 전송한 TCP socket을 보냅니다. 구글의 웹서버까지 라우팅되어서 전달될 것이고 구글의 웹서버는 해당되는 Request 메세지에 대한 응답으로 HTTP reply 즉 response 메시지를 응답할 것입니다.
이 메시지가 응답되면 그제서야 최종적으로 브라우저에 구글의 웹페이지가 화면에 나타납니다.
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터네트워크] ARP (0) | 2024.12.07 |
---|---|
[컴퓨터네트워크] 링크 레이어 (0) | 2024.12.07 |
[컴퓨터네트워크] routing among the ISPs : BGP (1) | 2024.12.05 |
[컴퓨터네트워크] intra-AS routing (1) | 2024.12.05 |
[컴퓨터네트워크] distance vector (1) | 2024.12.05 |