본문 바로가기

컴퓨터 네트워크

(30)
CH5 : Network Layer Control Plane (1) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * Routing 목적지까지 데이터를 보낼 때 어떤 경로를 거쳐 보내야 할지 정하는 것은 매우 중요하다. 실제로 src에서 dst까지 다양한 경로가 존재할 수 있기 때문에 최적의 path를 찾기 위한 방법을 제시해주는 것이 Routing Algorithm이다. 이때 라우터와 그 간의 링크들은 그래프에서 vertex와 edge로 표현될 수 있다. 이렇게 각 링크의 트래픽양이 다르고 어떤 경로를 통해 데이터를 보냈을 때 가장 적은 트래픽의 영향을 받으며 보낼 수 있을까? 알고리즘 파트에서 배웠던 그래프에서의 최단거리 알고리즘들이 떠오른다. (벨만포드, 다익스트라, 플로이드.....
CH4 : Network Layer (4) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * IPv6 IPv6가 나오게된 배경은 그동안 말했듯이 IPv4의 주소부족현상 때문이다. 때문에 주소의 bit수를 늘려서 더 많은 주소를 처리할 수 있게끔 한다. 또한 IPv4에 비해 헤더도 바뀌었는데, 목적은 더 빠른 프로세싱과 QoS를 지원하기 위해서다. 헤더의 변화는 다음과 같다. 한눈에 보기 편한 그림이 있어서 가져왔다. 일단 헤더의 길이는 기존 IPv4에서는 가변이었다. (20~60) 그러나 IPv6에서는 헤더의 크기가 40으로 고정이기 때문에 헤더의 길이에 대한 부분과 옵션에 대한 부분이 없어졌다. 또한 IPv6는 fragmentation을 지원하지 않는다. 때문..
CH4 : Network Layer (3) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * DHCP(Dynamic Host Configuration Protocol) DHCP는 host가 켜졌을 때 자동으로 네트워크를 찾게 해주는 프로토콜이다. (예를 들어 우리가 컴퓨터를 키면 컴퓨터가 자동으로 네트워크를 찾아주듯이) DHCP서버는 전원이 켜진 host에게 자신의 서브넷 네에서 사용할 수 있는 IP를 할당해주는데, 한번 IP를 주고나서 host가 네트워크를 사용하지 않는데도 IP를 할당받은 채로 있으면 IP주소의 낭비가 발생한다. 따라서 lifetime도 함께 넘겨줘서 해당 시간내에 다시 요청이 오지 않으면 클라이언트는 할당받은 IP를 반납하는 식으로 구성된다..
CH4 : Network Layer (2) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * IPv4 Addressing 각 인터넷 host들은 universally하게 uinque한 IP 주소를 가지고 있다. 라우터와 Layer1 (피지컬 레이어)사이에 있는 인터페이스를 NIC라고 한다. (Network Interface Card) IP는 이 인터페이스의 포트에 적용된다. 한 라우터에 여러개의 호스트가 접근해야 하기 때문에 Multi-homed라고 한다. 여러개의 IP가 접근해 오는 포트를 IP로 구분할 수 있다. IP주소는 계층적 구조를 가진다. network number + host number (총 32비트)로 이루어져 있는데, 같은 network에 존재..
CH4 : Network Layer (1) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * 네트워크 레이어 목적지 IP를 base로 하여 host to host간의 패킷 전송을 담당한다. 네트워크 레이어에는 두가지 기능이 있다. 1. Data plane (데이터 전송 담당) - fowarding : 현재 라우터에서 적당한 라우터로 패킷을 어떻게 전송할 것인가? - Per-router fucntion : local의 하나의 라우터에서만 작동한다. 2. Control plane (전송 제어 담당) - routing : source로부터 destination까지 패킷의 route를 어떻게 결정할 것인가? - Network-wide function : Data pla..
Socket Programming (소켓 프로그래밍) (2) 지난 글에서는 server와 client의 연결, 그리고 메시지를 보내고 받는 함수들에 대해서 알아보았다. 본 글에서는 앞서 배운 과정과 함수들을 이용하여 직접 통신해보는 프로그램을 구현한다. 지난 글에서 알아본 과정은 다음과 같다. 만약 과정이 이해가 안된다면 이전글(링크)를 통해 이해하고 오자. TCP 다음 코드들은 메시지를 보내는 예시코드이다. TCP 서버코드 #define BUFSIZE 1024 void error_handling(char *message); int main(int argc, char **argv){ int serv_sock; int clnt_sock; char message[BUFSIZE]; int str_len; struct sockaddr_in serv_addr; struct..
Socket Programming (소켓 프로그래밍) (1) API API란 시스템이 어플리케이션에 제공하는 인터페이스이다. API에는 여러 종류가 있는데 우리는 TCP/IP에서 쓰이는 다양한 API중 Sokcet에 대해 알아 볼 예정이다. TCP/IP에 쓰이는 API는 Socket말고도 TLK, XTI, Winsock, MacTCP등 여러 종류가 있다. Sokcet 소켓은 다섯개의 componet와 관련이 있다. 또한 아래의 함수들은 헤더파일과 헤더파일에 존재한다. 1. Protocol - 어떤 프토토콜을 사용할 건지 - socket()함수의 argument로 어떤 프로토콜을 사용할 건지 알려준다. 2. Source's address and port number - 보내는 곳의 주소와 포트넘버 - socket()함수는 socket descriptor(OS에서의 ..
CH3 : Transport Layer (5) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * Congestion Control 이미 여러번 언급했지만 이번강의에서는 congestion control에 대해 자세히 알아본다. Congestion 라우터가 처리할 수 있는 용량보다 많은 packet이 들어오게 되면 congestion이 일어난다. congestion이 일어나면 크게 두가지 상황이 발생한다. 1. packet loss (라우터의 buffer가 overflow가 나서 패킷이 로스된다) 2. long delays (라우터의 queue가 매우 혼잡하여 처리과정이 느리다) 이러한 문제가 발생하지 않게 사전에 예방을 해야하는데 방법은 sendring rate를 ..