2019.04.06 TIL
(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)
# 질문에 답하기
- 네트워크의 큰 그림에 대해 이야기 해보기
들어가기
나만 가지고 있는 데이터는 크게 의미가 없다.
우리는 서로의 데이터를 공유할 때 그 효과는 극대화 된다.
이러한 것을 실현 시켜주는 것이 네트워크이다. net + work 라는 글에서 알 수 있듯이
우리가 가진 데이터들을 공유시킬 수 있는 망이다.
인터넷은 international network 라는 말의 줄인말이며 네트워크의 네트워크라고 할 수 있다.
이렇게 규모가 커진 인터넷을 관리하기 위해서는 여러가지 규약들이 필요하게 되었다.
즉 network간의 데이터를 교환하기 위한 규약이 생기게 된 것이다. 이를 프로토콜이라고 한다.
이 프토토콜을 기능별로 나누어 OSI 7계층 혹은 TCP/IP로 부른다.
이렇게 계층화를 시킴으로서 통신에 문제가 발생하였을 때 어디서 발생했는지 찾기가 쉬워지고,
데이터의 흐름을 알 수 있게 되었다.
TCP/IP 4계층으로 네트워크의 큰 그림을 그려보고자 한다.
기본적으로 우리는 client / server 그리고 중간에서 통신을 도와주는 라우터로 나눌 수 있다.
네트워크
위의 그림은 내가 일단 네트워크를 정리한 큰 그림이다.(4계층으로 정리)
각각의 상세 기능에 대한 설명은 뒤로 하고 이번에는 먼저 큰 것들에 대해 설명해보고자 한다.
network interface(파랑)
먼저 client(우리 노트북)에서 우리가 속해 있는 LAN(local area network) 범위 즉 라우터 (IPTime 으로 생각해도 좋다)까지 먼저 데이터를 전송해야 한다. 그 가장 기본이 되는 것이 네트워크 인터페이스(파란색)이다.
네트워크 인터페이스에서 NIC(network interface controller)는 컴퓨터에 설치되어 네트워크와 연결하기 위한 장치로 흔히 우리가 말하는 랜카드이다. 그리고 이 NIC가 가지고 있는 하드웨어 주소를 MAC주소이라고 한다. 이런 LAN사이의 통신은 이더넷프로토콜이 책임이며 MTU(maximum transmission unit)는 한번에 보낼 수 있는 최대 데이터 양으로 약 1500byte정도 된다.
internet(빨강)
다음으로는 우리가 많이 부르는 IP에 관한 내용이다. 각각의 라우터는 ISP(internet service provider)로 부터 공인 IP를 부여받는다. 이 IP는 ipv4 버전으로 4byte로 표현된다.(2진법) 이것을 10진법으로 바꾸어 192.168.142.68 처럼 IP주소가 된다. 라우터를 통해 라우터에 접속되어 있는 client들은 사설 IP를 부여 받게 되고 각각의 client들의 사설 IP와 MAC Address를 일치 시키기 위해 ARP(address resoultion protocol)을 따른다. 이는 브로드캐스팅(모두에서 ping을 쏘아 회신을 받는다) 방법을 통해 접속해 있는 모든 client들의 MAC주소를 사설 IP주소와 묶어 하나의 table로 만든다.
그리고 좀 더 효율적인 관리를 위해 서브넷 마스크를 도입하여 IP의 낭비를 막는다.
또한 client의 사설 IP주소가 라우터로 왔을 때 사설 IP주소로는 그 이후로는 더 전달할 수 없으므로 이 사설 IP주소와 라우터가 가지고 있는 공인 IP주소를 바인드하는데 이를 NAT(network address translation)라고 한다. 하지만 하나의 공인 IP주소와 하나의 사설 IP주소를 바인딩하는 것은 1개 혹은 2개 밖에 바인딩하지 못해 다른 client들의 접근이 제한되므로 NART(network address port translation)방법을 통해 각각의 IP주소 뒤에 port번호를 추가한다.
보통 미국에 있는 서버에 접속하기까지 10개 이상의 라우터들을 거쳐야 하는데 어떤 라우터들을 거쳐서 갈지를 결정하는 알고리즘이 IP routing이라고 한다.(router는 hop이라고도 부른다) 한번 다녀간 다음에는 route table에 맵핑을 해놓는다.
transport(초록)
client에서 라우터 혹은 라우터에서 서버로 접속할 때는 데이터의 transport가 일어나게 된다. 데이터 전송법은 크게 2가지가 존재한다. 한개는 TCP(transmission control protocol) 또 한개는 UDP(user datagram protocol)이다.
이 TCP는 신뢰성에 집중하여 유실 될수도 있는 부분을 검출 해내어 재전송하고 순차적으로 전송하며(따라서 느리다), UDP는 신뢰성보다는 빠른 전송에 집중하여 데이터를 전송한다. 보통 스트리밍 혹은 게임등에 데이터 전송에 사용된다.
TCP는 먼저 서로의 연결을 완료한 뒤( three way handshaking 방법 사용) 연결이 끝나면 데이터를 전송한다.(sliding - window 방법 사용)
application(분홍)
그럼 이러한 모든 과정이 일어나는 곳은 어디일까? 바로 application이다. application을 통해 우리는 직접적으로 상호작용한다. 우리가 자주 이용하는 크롬 혹은 익스플로러가 될 수도 있고, HTTP, SSH, DNS 등이 될 수도 있다.
전체적인 그림을 나름 많은 자료를 바탕으로 그려보았으나, 이렇게 설명해놓은 곳은 없어서 걱정스럽기도 하다. 하지만 일단 지식을 내 머리속에 넣어야 하기 때문에 하나의 틀로 만들어보았다. 앞으로 공부해가며 틀린 부분이 있으며 수정해야겠다. 추가적으로 각 내용들의 상세부분은 따로 한번 더 정리할 예정이다.
'컴퓨터공학' 카테고리의 다른 글
컴퓨터공학 12. 네트워크 - interface,internet (0) | 2019.12.29 |
---|---|
컴퓨터공학 11. 리눅스 (0) | 2019.12.29 |
컴퓨터공학 10. 컴파일언어와 인터프리터언어 (0) | 2019.12.29 |
컴퓨터공학 09. Process와 thread (0) | 2019.12.29 |
컴퓨터공학 08. 메모리&가상메모리 (0) | 2019.12.29 |