pc의 경우, Acess point에 유선으로 연결하여 사용하고, 노트북의 경우 보통 무선으로 연결하여 쓴다. 스마트폰의 경우 집에서는 AP에 연결하여 쓰지만 밖에 나가면 기지국에 연결한다.
이것으로 알 수 있는 것은, 네트워크도 종류가 다양하다는 것이다. 유선네트워크 안에도 여러 갈래가 있고, 무선네트워크에도 여러갈래(5G, 와이파이, 4G), 센서 네트워크 등 여러 종류의 네트워크가 존재한다.
OSI 7계층은 유/무선 구분하지 않고 동시에 적용되는 개념이다.
네트워크 동작을 수행하는 모든 디바이스에는 기본적으로 OSI7계층이 올라가 있어야 한다. 이게 실제 구현으로는 4계층으로 올라가 있지만, 어쨌든 7계층이 하는 역할을 네트워크 동작하는 모든 디바이스가 갖춰야만 함
케이블, 무선, UTP, 라디오 등 여러 물리 매체가 있는데, 이를 통해 데이터를 주고받기 위해서는 각 매체에 맞는 전기적 특징을 이용해야한다. 라디오라면 공기중에 쏟아지는 전파를 사용해 데이터를 주고 받아야하고, 동축케이블이라면 동축 케이블 특성에 맞게 주고 받아야한다. 물리계층에서는 이러한 매체들의 특성에 따라 데이터를 주고받는 방식을 정의하는 역할을 한다.
네크워크 프로그래밍을 한다는 것은 5~7 레이어를 작성하는 일이다.
1,2 계층은 하드웨어에 구현되어있으며, 3,4 계층은 운영체제에 소프트웨어적으로 구현되어있다.
네트워크들을 이어주는 코어네트워크를 인터네트워킹이라 한다. 즉 인터넷
스위치
: 여러 네트워크 선들이 스위치로 연결되어 하나의 아웃풋으로 나가게 하는 기능을 한다.
라우터
: 여러 네트워크 선들이 라우터로 연결되어 나가는 길이 여러개이며 이 나가는 길을 결정해주는 기능을 한다.
정리: 스위치와 라우터 모두 여러 네트워크 선들이 모이지만, 스위치는 나가는 길이 하나이고, 라우터는 나갈 수 있는 길이 여러개이며 나가는 방향을 정하는 기능을 한다.
devices
단말, 호스트, end system
이라 한다.communication link
데이터 전송방법
패킷 스위칭
이라 한다.인터넷
프로토콜
인터넷 표준
인터넷이란, 어플리케이션에 서비스를 제공할 수 있는 인프라스트럭쳐이다. 인터넷은 앱을 위한 프로그래밍 인터페이스를 제공한다. 대부분의 앱을 만들기 위해서는 네트워크를 사용해야 하는데, 이를 위해 소켓이라는 프로그래밍 인터페이스를 사용한다. 소켓 프로그램이 인터넷의 기능을 활용해 데이터를 가지고오고, 전송하는 기능을 한다.
1. network edge
host: client and server
2. access network
사용자가 인터넷 사용을 위해 1차로 엑세스한 네트워크이다. 즉 네트워크 코어로 나오기 전까지의 네트워크를 의미한다.(게이트웨이 전까지)
3. network core
라우터로 연결되어있으며, 네트워크의 네트워크이다.
네트워크 코어는 라우터들의 메쉬이다. 라우터는 패킷단위로 라우팅을 한다. 네트워크 코어에서 발생할 수 있는 문제점으로 큐잉 딜레이와 로스가 있음. 어떤 라우터에서 보낼 수 있는 패킷의 양이 한도를 초과하게 되면 패킷이 쌓이게 됨(큐잉딜레이) 그런데, 쌓이는 패킷이 버퍼초과하면 패킷이 버려지게 됨(로스)
네트워크 코어는 라우터 간의 연결
라우터는 어떤 역할?
(1) 라우팅
(2) 포워딩
컴퓨터 네트워크에서 circuit(전용선) switching 이 아니라 packet switching 을 사용하는 이유는, burst 한 데이터의 경우 패킷으로 쪼개 보내는 것이 유리하기 때문이다. 또한 패킷스위칭은 더 많은 유저가 네트워크를 사용할 수 있게 함
delay, loss, throughput
위 세가지가 네트워크의 성능평가 판단 기준이다.
네트워크 트래픽은 burst 한 특징을 가지고 있다. 그렇기에 버퍼에 패킷이 쌓이게 되는데 쌓여서 기다리면 delay 되는 것이고, 버퍼가 다 차게 되면 loss되는 것이다.
peer 2 peer 즉 바로 옆에 있는 애들끼리이다. end 2 end 아님
링크 레이어의 서브레이어 두가지
1. error detection, correction
2. MAC(multiple access protocol)
2계층에서 왔다갔다 하는 애들을 프레임
peer to peer간의 연결이 link
비가 많이 오는날, 무선인터넷의 속도를 재보면 확실히 떨어짐. 왜? 에러난 거 다시 보내주고...반복
NIC카드안의 펌웨어에 구현되어있음
EDC를 보고 데이터가 깨졌는지 안깨졌는지 확인
Correction 이 들어가는 이유는, EDC 를 보고 깨진 부분을 고칠 수도 있기 때문임
ED 나 EDC
EDC의 코드가 더 길다. 당연히
2Dimensinal parity 의 경우, 어디가 깨졌는지 특정할 수 있으므로 ED뿐만 아니라 EDC도 가능
그러나, 2D 도 깨졌는데도 정상적으로 온 것으로 착각하고 넘기는 경우 존재하지만 single parity 보다는 훨씬 낫다.
2계층에서, parity 도 안쓰고, checksum 도 사실 안씀. 왜냐, 에러 잘 못잡아내기 때문. 그래서 crc를 씀
checksum 은 4계층에서 end to end 의 데이터가 깨지지 않고 잘 왔는지 확인할 때 씀
checksum: 데이터를 쪼갠 것을 다 더해서 1의 보수를 취한것
헤더에다 첵썸을 집어넣음
받는애는 데이터를 다 더한다음 결과값이 모두 1이 나오면 데이터가 깨지지 않은 것. 1이 안나오면 데이터가 깨진 것.
이진수 R 을 정한다음 데이터에 CRC bit 를 붙이는데 R로 나누어 떨어지는 숫자를 붙이는 것. 받는 애는, R로 나눠봐서 떨어지면 제대로 온 것이라고 파악
R을 어떻게 정할 것인가?
수학자들이 미리 정해놓음
복잡한 crc 체크를 하는 이유는, 에러를 매우 잘 잡아내기 때문임. 32빗 보내면 쵀대 31빗까지 에러잡을 수 있음. 에러는 burst 하게 나기 때문에, crc는 에러디텍션에 아주 좋은 선택임
이더넷에서는 '신호를 보내는 타이밍'을 겹치지 않도록 함으로써 되도록 충돌이 일어나지 않게 한다. 이를 위해 CSMA/CD라는 엑세스 제어를 시행한다.
random access MAC protocol에 CSMA/CD(유선), CSMA/CA(무선) 있음
CSMA 에서 데이터의 충돌이 있는 이유?
데이터의 전파시간이 있기 때문이다. (PROPAGATION)