프로그래밍/Computer Network

1. Introduction of networking

prime 2024. 4. 4. 23:02

해당 내용은 Cousera에서 무료로 제공되는 Google강의인 The Bits and Bytes of Computer Networking을 정리한 내용입니다.

 

1. Introduction to Computer Networking

 

인간은 communication시에 일정한 규칙을 따른다. 컴퓨터도 그런데, 컴퓨터끼리의 그러한 규칙을 Protocol이라고 한다. 

Computer networking이란 어떻게 컴퓨터가 서로 communicate하는지에 관한 전체적인 범위이다.

이러한 computer networking의 layer에 대한 여러 model들이 있는데, 그 중 하나가 TCP/IP five-layer model이다.

각 layer의 protocol은 바로 상위의 layer의 data를 싣는데, 이는 data를 전송하기 위함이다.

 

2. TCP/IP five-layer network model

 

TCP/IP five-layer model은 다음과 같다.

Application Layer
Transport Layer
Network Layer
Data Link Layer
Physical Layer

 

Physical Layer은 device들을 연결하는 networking cable, connectors, sending signal에 대한 것이다. 

Data Link Layer은 network interface나 network access layer로도 불리며, network device들이 communicate할 수 있도록 signal을 interpret하는 방법을 정의한다. 이러한 방법중 가장 일반적인 것은 Ethernet protocol이고, Ethernet standard는 같은 network나 link의 node끼리 데이터를 얻는 protocol을 정의한다. 

Network Layer은 router와 같은 device를 통해 서로 다른 network끼리 communicate할 수 있도록 한다. 이를 통해 Internetwork가 생성되는데, Internetwork는 router를 통해 연결되는 network의 모음이다. 가장 유명한 Internetwork는우리가 자주 부르는 internet이다. 가장 일반적으로 IP(Internet Protocol)가 사용되며, 이것은 가장 작은 네트워크를 가리키며, 한 node로부터 다른 node로 올바르게 데이터가 도착하는데 책임이 있다.

Transport Layer은 어떤 client/server가 데이터를 받도록 되어있는지 분류하며,  예를 들어, web brower과 web server는 각각 software이다. web browser는 데이터를 받는 쪽이므로 client이고, web server는 데이터를 주는 쪽이므로 server이다. web server에서 cable을 통해 end node로 전송된 데이터는 transport layer에서 web browser software로 데이터가 전달 될 수 있도록 분류된다. 가장 일반적으로 TCP/UDP protocol이 있다. 이것은 올바른 application에 데이터가 도착하는데 책임이 있다.

Application Layer은 Application에 따라 다른 protocol을 사용한다. 이를 통해 이메일을 받거나, 검색을 할 수도 있다. 

 

이러한 계층적 방식은 일상생활에서 배달과 유사하다.

physical layer는 delivery truck과 road를 정의한다.

data link layer는 어떻게 delivery truck이 one intersection에서 next intersection으로 가는지를 정의한다.

network layer는 address A에서 address B까지 가는데, 어떤 road로 가야하는지를 정의한다.

transport layer는 어떤 door로 package가 도착했다는 것을 알려줘야 하는지를 정의한다.

application layer는 package의 content를 정의한다.

 

3. Basics of Networking Devices

 

1) Cable

 

컴퓨터끼리 communicate하기 위한 여러 device, cable들이 있다. Cable이란, 서로 다른 device들끼리 데이터를 전송하기 위해 그들 둘 사이를 연결하는 역할을 한다. Cable에는 두 종류가 있는데, Copper, Fiber이다.

 

Copper cable은 가장 일반적인 cable이다. 이것은 여러개의 twisted copper wire pair로 이루어져 있고, 각각의 pair는 plastic insulator로 감싸져있다. 이것을 통해서 우리는 0과 1로 이루어진 데이터를 보내는데, 이것은 두가지 범위의 voltage로 표현된다. 수신측에서는 이러한 voltage의 변화를 감지하여 이것을 binary data로 변환한다.

가장 일반적인 twisted-pair calbe은 Cat5, Cat5e, Cat6 이다. Cat5는 거의 쓰지 않고, 대부분 Cat5e나 Cat6를 사용하는데, 이들의 차이점은 어떻게 내부의 twisted-pair가 배열되어있냐의 차이이다. 이러한 배열방식에 따라 데이터의 전송속도, 간섭에 저항하는 정도 등이 달라진다. Cat5가 사용되지 않는 이유는 Crosstalk때문이다. Crosstalk는 한 wire의 pulse가 다른 wire의 pulse에 감지되는 것을 말한다. 이것은 수신측에서 데이터를 이해할 수 없게 만들고, network error를 발생시킨다. 이러한 문제가 발생할 때, 상위 level의 protocol에서는 데이터가 재전송되도록 하는데, 이러한 잦은 crosstalk은 잦은 재전송을 만들어 전체 데이터의 전송이 지연되게 한다. Cat6는 Cat5e보다 더 빠르고 신뢰성있지만, high speed를 위해 사용할 때 더 짧은 maximum distance를 가지고 있다.

 

Fiber cable은 개별적인 optical fiber들을 가지고 있는데, optical fiber은 너비가 인간의 머리카락 정도밖에 안되는 아주 작은 유리로 만들어진 tube이다. 이것은 pulse of light를 전달한다. Electromagnetic interference가 심한 곳에서는 fiber cable가 유용하다. 이것은 copper cable보다 빠르고 신뢰성있고, 멀리까지 데이터를 보낼 수 있다. 하지만 훨씬 비싸고 취약하다.

 

2) Hubs and Switches

 

Hub는 physical layer device로서, 여러 컴퓨터들은 연결시키는 것을 가능하게 한다. Hub에 연결된 컴퓨터에서 전송된 데이터는 연결된 다른 모든 컴퓨터로 전달되고, 실제로 그것을 받을지 무시할것인지는 각 컴퓨터에 의존한다. 이것은 네트워크에서 많은 잡음을 만들고, Collision domain을 생성한다. collision domain이란, 한번에 하나의 device만이 communicate할 수 있는 네트워크 구간을 말한다. 만약, 여러 시스템이 collision domain에 데이터를 보낸다면, electical pulse들은 서로 간섭하고 이는 재전송을 야기한다. Hub에 연결된 모든 컴퓨터는 같은 collision domain인데, 하나의 device가 데이터를 전송하면 모든 다른 컴퓨터에 전달되므로, 연결된 전체 네트워크 구간을 이용할 수 없다. 만약  다른 컴퓨터가 communication하기 위해서는 이전 모든 전송이 완료되기까지 기다려야하고 이것은 network communication 속도를 저하시킨다. 

Switch(Switching hub)는 Data link layer device로서, ethernet protocol의 content를 검사해 어떤 device로 데이터를 전송해야하는지 파악해 오직 해당 device로만 데이터를 전송한다. 따라서, collision domain을 줄여주는 역할을 한다. 이러한 hub와 switch는 LAN이라고 부르는 하나의 네트워크의 컴퓨터들을 연결하기 위해 쓰인다.

 

3) Router

 

Router는 Network layer device로서, internal table을 갖고 이를 이용해 독립적인 네트워크 간에 데이터를 어떻게 forwarding시킬지 결정하는 장치이다. 집이나 회사에 있는 Router의 경우 ISP(Internet service provider)로 forwarding시킴으로서 여러 다른 네트워크로 데이터를 전송시킨다. Core router는 internet에서 척추와 같은 역할인데, Core ISP router는 일반 router보다 더 많은 traffic을 처리할 뿐만아니라, 수많은 다른 router와의 연결을 갖고 있다. Router끼리는 BGP(Border Gateway Protocol)을 이용하는데, 이를 통해 서로의 데이터를 공유하며 학습을 통해 forwarding하기에 최적인 경로을 찾는다. 

 

4) Servers and Clients

 

네트워크에 연결된 device들을 node라고 한다. Server란 데이터를 보내는 node이고, Client 데이터를 받는 node이다. 하나의 컴퓨터에는 여러 프로그램이 실행될 수있고, 어떤 프로그램은 데이터를 주고 어떤 프로그램은 받기도 한다. 따라서, 하나의 node는 server이자 client가 될 수 있다. 예를 들어, 메일서버의 경우 DNS에 질의할 때는 client이고 메일데이터를 전송할 때는 server이다.