오늘따라 더욱 고통스러웠던 네트워크 수업 ㅋㅋㅋ
모르는 단어들과 원리들의 총집합체였습니다.
앞으로도 더욱 많은 지식과 만나게 되겠죠? ㅎㅎ...
0. Review Discussion
0-1) link와 host?
네트워크는 노드와 링크로 구성됩니다.
이때, 노드와 노드를 연결해주는 데이터가 전달되는 경로를 링크라고 합니다.
노드를 다른말로 host라고 합니다.
데이터를 주고 받는 주체 즉, 네트워킹 할 때 애플리케이션을 수행하는 주체를 우리는 host라고 합니다.
0-2) router와 internetwork란?
하나의 네트워크는 기본적으로 다이렉트로 연결되있는 노드들 아니면 스위치를 통해서 연결되어 있는 것을 하나의 네트워크라고 부릅니다.
서로 다른 네트워크를 연결시키는 장비를 라우터라고 합니다.
특히 router에서 수행하는 일은
1) 라우팅 : 소스 주소랑 도착지주소를 분석해서 최적의 경로를 찾아줍니다.
2) 경로를 찾아준 후에 패킷이나 데이터 경로가 왔을 때 어떤 링크로 보내야하는지 결정이 되는데요. 이 때 데이터를 store -> forward를 하는 기능을 수행합니다.
internetwork는 네트워크의 네트워크라해서 여러 개의 네트워크가 연결되어있는 것을 인터네트워크라 합니다.
0-3) 네트워크에서 패킷을 왜 사용하냐?
네트워크에서 패킷 기반으로 한다는 것은 데이터스트림을 잘게 쪼개서 패킷단위로 보낸다는 것을 의미합니다.
잘게 쪼개지 않고 통으로 보내는 것도 가능한데, 에러가 날 경우 다시 통으로 보내야해서 효율이 떨어집니다.
데이터 손실이 일어났을 때 재전송, 복구를 최소화하기 위해서 패킷 방식을 사용합니다.
이 때 패킷에는 패킷 헤더가 붙는데, 헤더에 담기는 정보들은 너무 방대해서 다 알기는 어렵지만, 프토토콜에 필요한 정보들이 모두 패킷 헤더에 담깁니다. 그러다보니 overhead가 발생됩니다.
overhead에는 소스 ip 주소, 목적지 ip주소, 데이터를 보내는 전송 사이즈에 대한 정보, 포트번호, error 복구 및 확인하는데 필요한 체크성 정보, 여러 부가정보들이 들어갑니다.
데이터 손실났을 때 재전송하는 양을 줄인다는 장점은 얻었지만, 대신에 패킷마다 붙어야하는 overhead가 생김으로인해 또다른 overhead가 단점으로 작용합니다.
하지만 현재 패킷방식이 데이터네트워크 상에서는 가장 효율적으로 사용이되고 있습니다.
IoT에서는 이 패킷 overhead가 크게 작용이되어 어떻게 하면 줄일 수 있을지 연구중이라고 합니다.
0-4) 프로토콜은 무엇이고 왜 필요할까?
사람들은 어떻게 대화를하는지 어렸을 때 부터 대화 패턴을 배우면서 규칙이 없음에도 불구하고, 사회성을 키울 수 있습니다. 그래서 사람은 서로 커뮤니케이션을 할 수 있습니다. 하지만, 컴퓨터는 이게 불가능합니다. 그래서 메세지포맷, 메세지절차 등한 디테일한 것들이 전부 약속이 되어있어야 전세계에 있는 모든 컴퓨터들이 서로 호환이되게 대화를 할 수 있습니다. 이러한 약속과 절차를 프로토콜이라고 부릅니다.
컴퓨터 네트워크는 레이어링된 구조로 설계가 된다.
1. Physical Layer
피지컬 레이어에서는 비트로 된 데이터를 전파 신호로 바꿔서 전파로 데이터를 보내는 역할을 합니다. (전자회로 쪽에서 하는 일)
컴퓨터는 기본적으로 모든 정보를 바이너리로 취급합니다. (0101...)
이런 컴퓨터(node=host)의 바이너리 데이터를 무선신호나 이더넷 케이블(데이터 전송 매체 link)을 통해서 우리가 네트워크를 흘려 보내게 됩니다. 0101(node)이라는 비트데이터를 무선신호, 이더넷케이블(link)로 신호를 보내는 것입니다.
추가로 link에는 WiFi, 3G, 4G, 5G, 이더넷이 있습니다.
이런 링크를 이용해 노드들이 연결되어 데이터를 보낼 수 있게 되는 것 입니다.
1-1. analog signal
link들은 전파의 신호만 날릴 수가 있습니다. 이것을 아날로그 시그널이라고 합니다.
전파가 있을 때 피지컬 레이어에서는 디지털로 된 데이터를 아날로그 형태의 전파로 변형해주는 과정이 필요합니다.
디지털 신호를 아날로그로 변환하는 방법에는 여러가지가 있는데, 이 과정을 modulation이라고 합니다.
가장 쉬운 방법은 아래 그림처럼 페이스를 이용해 1과 0을 구분하도록 하는 방법입니다.
다시 설명하자면, node에서 0101의 디지털신호는 link에서 modulation을 통해 아날로그 시그널(전파)로 변형되고, 도착지의 node에서 정확한 변역을 위해 다시 demodulation을 진행해 시그널에서 디지털 신호로 변형되어 전달됩니다.
= 모듈레이션 1번, 디모듈레이션1번
+ plus
예전에는 modulation + demodulation 을 합한 용어로 모뎀이라는 것이 있었는데, 인터넷을 하기 위해선 이 장치를 설치해야했습니다.
1-2. bit
피지컬 미디어를 통해서 전달되는 데이터의 최소단위를 bit라고 합니다.
trasmitter와 receiver 사이에 전송되는 데이터의 최소단위를 비트라고 합니다.
1010 가운데 1 처럼 하나의 바이너리를 bit라고 합니다.
1-3. (physical) link
trasmitter와 receiver 사이에 놓여있는 링크 입니다.
이 링크는 2가지로 구성이 됩니다.
1) guided media
아날로그 전파가 고체로 된 공간에 갇혀 전파되는 형태입니다. (=유선 = wired link)
갇혀서 전파를 보내다 보니 퍼지지 않고, 더욱 멀리 전파를 보낼 수 있습니다. 안정적인 전달 방식입니다.
아무리 멀리 있어도 전파의 모양이 왜곡되지 않고, 리시버까지 안전하게 갑니다.
대신, 유선케이블의 설치비(매선 비용)가 많이 발생합니다.
2) unguided media
신호가 공중으로 자유롭게 퍼지는 형태입니다. (=wireless link)
때문에 상대적으로 멀리있는 곳까지 전달하기가 어렵습니다.
원래 전파 모양을 리시버는 복원이 어렵기 때문입니다.
주로 컴퓨터와 노트북과 직접 만나는 access network에서 많이 쓰입니다.
반면, 네트워크는 유선으로 core network에 연동이 됩니다.
대표적인 예로는 LAN케이블(구리선 2가닥)이 있습니다.
랜케이블은 카테고리 5, 카테고리 6 등의 랜케이블이 있습니다.
1)카테고리 5
:100Mbps~1Gbps의 속도를 냅니다.
2) 카테고리 6
: 10Gbps의 속도를 냅니다.
미디어의 종류와 프로토콜이 무엇인지에 따라서 데이터 레이트가 달라집니다.
+ 데이터 레이트 추가 설명
Kbps : 1초에 10^3 bit를 보낼 수 있습니다.
Mbps : 1초에 10^6 bit를 보낼 수 있습니다.
Gbps : 1초에 10^9 bit를 보낼 수 있습니다.
크면 클수록 초당 보낼 수 있는 데이터가 많다는 것을 의미합니다.
1-4. radio(wireless) link types
1) WLAN (=WiFi) : IEEE 표준화된 기술입니다. 54Mbps~3Gbps의 속도가 납니다.
2) wide-area (cellular) : 무선 링크는 보통 50~100m 정도의 커버리지로 비교적 크지 않습니다. 하지만 셀룰라통신은 기본적으로 2~4km 단위의 반경을 갖습니다.
-3G : 데이터속도는 수 Mbps정도로 별로 빠르지 않았습니다. (아이폰 처음 나왔을 당시)
-4G : 1000Mbp = 1Gbps의 정도를 갖습니다. (유튜브 등장)
-5G : 상대적으로 커버리지가 굉장히 좁습니다.
3)satellite (TV 브로드캐스트) : 국방분야, 비행기 네트워킹 할 때 활용됩니다. Kbps~45Mbps의 속도를 갖습니다.
가장 큰 약점은 너무 데이터 지연이 많이 걸립니다.(270msec 정도) 전파가 대기권 밖까지 나갔다 다시 돌아오기 때문입니다.
2. Link Layer
각 노드가 연결되어 있는 링크를 통해서 데이터를 보내는 것을 정의합니다.
노드에서 인접한 노드로 보낼 때 링크 레이어에서 사용하는 주소를 MAC 주소라고 부릅니다.
MAC 주소는 48bit로 구성되어 있습니다.
2-1. MAC Address
디바이스와 디바이스 사이에서 통신하기 위한 주소로 사용이 됩니다.
컴퓨터마다 네트워크 카드가 있는데, 제조될 때 고정된 주소로 제조사에서 붙여서 나옵니다.
즉, 전세계에서 식별할 수 있는 MAC주소가 부여되어 있습니다.
데이터를 보낼 때 데이터의 발신자가 맞는지 확인하는 용도로 사용됩니다.
자신에게 온 데이터가 아니면 드랍을 시킵니다. MAC주소가 일치하는 노드만 올리게 됩니다.
링크레이어는 같은 네트워크 안에서 다이렉트 혹은 스위치를 통해서 연결되어 있는 노드들끼리 데이터를 주고받을 때 사용하는 주소입니다.
MAC주소가 하는 기능들은 switching, error correction, multiple access가 정의되어 있습니다.
기능 1) error correction
데이터에 에러가 있는지 없는지를 확인합니다.
기능 2 ) multiple access
링크는 하나이지만, 동시에 데이터를 보낼 때 정보가 뒤섞이고 신호가 충돌이 나게 됩니다. 즉, 서로 데이터를 못보내는 상황이 발생하게 됩니다. 분산된 시스템에서 최대한 충돌을 피하면서 데이터를 주고받게 하는 것을 말합니다.
3. IP Layer (=network layer)
ip주소가 네트워크 레이어의 헤더정보로 붙게됩니다.
ip주소는 전체 네트워크에서 자신을 식별할 수 있는 유일한 주소로써 사용이 됩니다. 32bit로 구성이 됩니다.
ip주소를 가지고 라우터가 루팅을 하게됩니다. "이 ip주소를 가진 루트는 몇 번 링크로 가는 것이 가장 빠른 방법이다."라는 것을 알고리즘적으로 찾아내 forwarding을 해줍니다. 목적지까지 패킷을 보내는 경로를 찾는 것에 사용이 됩니다.
4. Transport Layer
4-1. 6번 노드가 120번 노드에게 데이터를 보냈을 때 에러가 발생되었다는 것을 어떻게 알 수 있을까요?
120번 노드가 6번 노드에게 데이터를 잘 받았다고 전달해주면 됩니다! 이것을 ACK라고 합니다.
ACK을 오랫동안 못받았다면, 6번 입장에서는 데이터 loss(손실)라고 판정해 재전송을 진행합니다.
4-2. 대표 프로토콜
TCP
데이터가 손실없이 목적지까지 전달되는 것을 보장해주는 전송 프로토콜 입니다. (=reliablilty=신뢰성)
데이터를 받은 사람이 ACK을 보내줌으로써 보장합니다.
ACK을 받을 때까지 재전송하기 때문에 모든 데이터를 손실없이 목적지까지 보낼 수 있습니다.
TCP의 역할
congestion(병목) control이라는 알고리즘을 수행합니다.
네트워크는 공용 자원 입니다. 여러 컴퓨터들이 서로 데이터를 보낼 수 있는 경로입니다.
이런 경로에 너도나도 욕심부려 데이터를 왕창 보낸다면, 라우터에 버퍼링, 오버플로우, 과부하가 걸려 패킷 loss가 걸리기도 하고, 네트워크가 느려지기도 합니다. 때문에 병목현상을 피하기 위해서 속도를 조절 및 제어해줄 필요가 있습니다. ("각자 노드들끼리 속도조절을 하자")
네트워크가 느리지 않으면 전송속도를 점점 늘려나갑니다.하지만 무한정 늘려나가는 것이 아니라 네트워크가 congestion이 날 것 같으면 다시 줄였다가 늘렸다가를 반복합니다. 즉, 네트워크의 혼잡을 피하면서 활용하고 있습니다.
이 TCP프로토콜은 표준이 되어 있기 때문에 모든 네트워크들은 TCP 프로토콜을 따릅니다.
5. Applcation Layer
실제 애플리케이션이 동작하는 계층입니다.
네트워킹을 필요로하는 애플리케이션의 종류는 굉장히 다양합니다.
대표적으로 3가지 애플리케이션이 있습니다.
5-1. 네트워킹을 필요로하는 애플리케이션 종류
1) HTTP : 웹서버로부터 웹페이지를 주고받을 때 필요한 메세지 포맷이나 절차를 정의한 프로토콜 입니다.
2) POP3, SMTP : 메일서버로부터 이메일을 읽어들일 때 사용되는 프로토콜 입니다.
3) DNS(domain name service) : 도메인 네임을 ip주소로 변환해주는 프로토콜 입니다.
6. network core
네트워크를 연결하기 위해 라우터라는 장비를 통해 네트워크가 연결됩니다.
수많은 라우터들이 실제 네트워크를 연결하고 있습니다.
6-1. access network
실제 host와 연결되는 네트워크를 access network라고 합니다.
셀룰라 네트워크가 될 수도 있고, WiFi, 이더넷 등이 엑세스 네트워크가 될 수 있습니다.
6-2. core network
host들끼리 연결되면 네트워크들끼리 연결을 해줘야 하는데, 이런 장비를 라우터라고 합니다.
라우터들이 연결되어 구성된 네트워크를 core network라고 합니다.
6-3. 데이터를 전송하는 방식
1) circuit switching (회선 교환) : 부모님 세대 전화기 사용할 때 사용했던 방식 입니다.
사람 또는 기기가 회선을 만들어주고나면 데이터를 교환할 수 있습니다.
end to end resources가 예약되는 방식입니다. 수신자와 발신자 사이에 데이터 주고받는 방식을 reserve(예약)하는 것입니다. 예약된 경로(dedicated end to end connection)를 통해 아주 안정적으로 데이터를 보낼 수 있게 됩니다.
dedicated end to end connection을 만들기 위해선 call setup(하나의 회선을 예약하는 일) 방식이 필요합니다.
데이터를 모두 주고받을 뒤에는 연결을 끊어야합니다.(반납) 안끊는다면, 그 경로를 다른 사람이 쓰지 못하기 때문에 낭비가 됩니다.
회선을 만들 때 시간이 좀 지연이 되는데요. (=propagation delay)
상대방이 이미 다른사람과 통화중이라면, 통화중이라는 사실을 알려주게 됩니다.
장점으로는 일단 연결되면, 자신이 사용할 수 있는 전용 회선이 생깁니다. 즉, 안정적인 통신이 가능합니다.
단점으로는 연결(setup)되는데 시간이 오래걸리고, 노드가 많아질수록 자원이 부족해집니다.
특히 패킷보단 서킷 스위칭 방식이 더욱 자원이 부족하게 되는데 이유는 통화할 때 사용하는 전용 회선을 100% 활용하지 않고 있기 때문입니다. (=낭비, 비효율적)
2) packet switching (패킷 교환) : 컴퓨터 네트워크에 사용되는 방식입니다.
전용회선을 만들지 않고 각각의 패킷에 ip주소가 붙어있습니다. 라우터들이 라우팅알고리즘을 통해 목적지까지 라우팅을 해줍니다. 때문에 경로를 점유할 수 없습니다.
이 때, end to end 데이터가 패킷단위로 쪼개지는데요. 즉, 자신이 보내려는 애플리케이션 데이터가 작은 조각으로 쪼개진다는 것을 의미합니다.
오늘은 이해가 조금 어려웠던 시간이었습니다 ㅠㅠ
어려운 단어의 연속이네요 .. 머리가 아주... 고통 ㅎㅎ
내일도 힘내보세~~ 화이팅!!
'CS > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 5일차 : Throughput, Layering, ISP, Network Security (0) | 2021.09.14 |
---|---|
컴퓨터 네트워크 4-2일차 : 네트워크 delay / traceroute / Packet loss / Throughput (0) | 2021.09.13 |
컴퓨터 네트워크 4-1일차 : 네트워크의 4가지 지연 현상 총정리 : transmission delay / propagation delay / processing delay / queuing delay (0) | 2021.09.11 |
컴퓨터 네트워크 2일차 : 라우터, 네트워크, 프로토콜 전반적인 이해 (0) | 2021.09.01 |
컴퓨터 네트워크 1일차 : 컴퓨터로 소통하기 위해 필요한 것들 (0) | 2021.08.31 |