전공/네트워크 (21) 썸네일형 리스트형 애플리케이션 계층 - 웹의 모든 것(HTTP, Cookie, Cash, Proxy) 웹은 OSI 7 Layers의 최상위 계층에서 동작하는 서비스로서 우리가 흔히 이용하는 네이버 웹 페이지, 구글 웹 페이지 등의 그 '웹'을 통칭한다. 웹의 특징은 크게 다음과 같다. 웹은 서비스를 원할 때 원하는 것을 수신받을 수 있는 On-Demand 서비스다. 웹은 원하는 것을 요구/수신받을 때 HTTP 프로토콜을 이용한다. 웹은 클라이언트-서버 구조다. HTTP는 비상태, 비지속 프로토콜이다. 서버가 사용자를 구분하기 위해 사용하는 것이 쿠키다. 웹 캐시(또는 프록시)는 서버의 응답 속도를 높이기 위해 사용된다. 지금은 이해가 잘 안될테지만 자세하게 하나씩 살펴가며 이해해보자. 1. 웹은 서비스를 원할 때 원하는 것을 수신받을 수 있는 On-Demand 서비스다. 인터넷 이전에 우리가 사용하던 T.. 애플리케이션 계층 - 개요 오늘은 OSI 7Layer의 최상위 계층인, 응용 계층, 영어로는 애플리케이션 [Application] 계층이라고 한다. 애플리케이션? 우리가 아는 핸드폰에 다운로드 받는 그 애플리케이션과 같은 이야기인가? 맞다. 바로 그 이야기다. 우리는 친구와 연락을 하고 싶으면 카카오톡 애플리케이션을 이용하여 친구와 메시지를 주고 받는다. 즉 애플리케이션 계층은 일반 사용자와 가장 밀접하게 연관되어 있는 계층이며 개발자에 의해 개발된다. 애플리케이션 계층에서 자주 사용하는 통신 구조는 대표적으로 두가지가 있다. 클라이언트-서버 구조와 P2P 구조다. 클라이언트-서버 구조 예를 먼저 들어보자. 내가 네이버에 접속해서 "대전 맛집"를 검색하면 네이버는 대전 맛집 리스트를 보여준다. 이때 나는 정보를 요청하는 쪽은 클라.. 전송 계층 - TCP 의 모든 것 #2. 흐름제어, ARQ, Sliding Window 들어가기 전에, 해당 포스팅에선 '메시지'란 단어와 '패킷'이란 단어를 함께 혼용해서 사용했다. 따라서 글을 읽으면서 같은 뜻이라고 이해하고 읽으면 될 것 같다. 그러나, 원래 정의는 메시지는 7계층인 application 계층의 단위이며 이러한 메시지를 전송하기 편하게 잘게 쪼개놓은 것을 packet인 것을 염두하자. TCP는 흐름제어를 통해 메시지 전송을 보장한다. 흐름제어란 송신자[Sender]가 메시지를 보내는 속도가 수신자[Receiever]가 메시지를 처리하는 속도보다 빠를 때, 수신자의 메시지 함은 점점 차게 되고 결국 FULL 상태가 된다. 메시지 함이 꽉찬 상태에서 메시지를 더 받게되면 더 이상 저장할 공간이 없기 때문에 메시지를 버려야 하는 상황이 온다. 이를 '오버플로우[Overflo.. 전송 계층 - TCP 의 모든 것 (#1. 핸드세이킹, 혼잡제어) TCP는 신뢰성이 중요한 통신에서 사용되는 프로토콜이다. 신뢰성을 높이기 위해 여러가지 부수적인 임무를 담당하고 있는데 그 중에 대표적인 것이 핸드셰이킹, 혼잡제어, 흐름제어다. 논리적 연결- 핸드셰이킹을 통해 가상의 연결 터널(회선 통신)을 만들고 이를 통해서 데이터를 주고받는다. 흐름제어- 송신자[Sender]와 수신자[Receiver]의 메시지 속도를 조절하여 오버플로우를 방지한다. 혼잡제어- 송신자와 수신자 사이에 존재하는 네트워크의 혼잡도를 조절한다. 1. 핸드셰이킹[Handshacking]을 통한 논리적 연결 생성 논리적 연결이란 송신자와 수신자만을 위한 통로를 하나 만들어서 이 통로를 이용해서 통신하겠다는 의미이다. 한번 연결 통로를 만들어놓으면 이를 해지할 때까지 계속 이 통로 안에서 데이.. 전송 계층 - UDP와 TCP의 모든 것 전송계층을 대표하는 프로토콜은 UDP와 TCP다. TCP의 역할이 UDP에 비해 현저히 많기 때문에 포스팅을 두개로 나눌까 고민했지만 둘은 뗄래야 뗄 수 없는 사이인 것 같아 한번에 하기로 했다. 1. UDP[User Datagram Protocol] UDP의 모토는 '최소한의 기능으로 동작하자'다. 따라서 복잡한 과정은 일체없이 가벼운 임무만을 수행한다. 연결없다. 신뢰도 없으며 데이터 순서로 올바르지 않다. 그러면 왜 사용할까? 이것 저것 없이 전송만 하기 때문에 속도가 굉장히 빠르다. 비 연결형 프로토콜 신뢰할 수 없다. [데이터가 전송되었는지 보장X. 데이터의 순서가 올바른지 보장X] 속도가 빠르기 때문에 신속성이 중요한 서비스에 유리하다. UDP를 이용하는 서비스: DNS, SNMP, TFTP,.. 전송 계층 - 전송 계층 개요 #1. 다중화, 포트, 소켓 전송 계층은 OSI 7 Layer 중 네 번째에 위치한 계층으로서 데이터 단위는 세그먼트[Segment]다. 전송 계층의 역할은 '논리적 통신'이다. 송신자[Sender]와 수신자[Receiver]가 서로 통신할 때 물리적 관점에서 이들의 메시지는 많은 라우터와 링크를 거쳐야하지만, 이를 직접 연결된 것처럼 보이게끔 하는 것이다. 즉 정리하자면 쉽게 그냥 '전송'을 담당하고 있다고 생각하자. 전송 계층은 메시지의 전송이 올바르게 되는 것을 보장하기 위해서 몇가지 역할을 하고 있다. 1. 다중화와 역다중화 (=세그먼트 생성) 전송 계층은 Application 계층에서 메시지[Msg]를 받은 후 이를 쪼개 세그먼트 단위로 만든다. 그 후, 각 세그먼트마다 전송 계층의 헤더를 붙인다. 이 과정을 다중화[Mul.. 네트워크 계층 - DHCP [Dynamic Host Configuration Protocol] DHCP [Dynamic Host Configuration Protocol] 새로운 기기가 인터넷에 연결될 때 ISP로부터 IP를 부여받아야 한다. 이때 사용하는 IP가 고정적으로 사용되는 것이 아니라 동적으로 사용되어 계속 바뀌게끔하는 것이다. 하나의 ISP에는 여러 호스트가 존재한다. 그러나 모든 호스트가 동시에 동작하진 않는다. 따라서, 현재 인터넷을 사용하고 있는 호스트들에만 IP 주소를 제공하였다가 호스트가 기기를 끄고 인터넷 접속을 끊을 때 다시 IP 주소를 회수하는 것이다. 예를 들어, 하나의 네트워크 내에 존재하는 PC가 100대라고 가정해보자. 이때, 모든 PC의 최대 동시 사용은 오직 20대다. 고정적으로 IP 주소를 할당할 때는 100개의 PC 모두에게 IP 주소를 할당해야 하므로 1.. 네트워크 계층 - NAT[Network Address Translation] 공유기를 사용하고 있는 집이라면 '192.168.*.*'이라고 시작하는 자신의 IP주소를 몇번 본적이 있을 것이다. 또는 공유기 설정을 인터넷으로 하기 위해 '192.168.0.1'을 인터넷에 검색할 수도 있을 것이다. 심지어 cmd에서 ipconfig를 통해서 확인한 내 IP가 192.168.*.* 인데 다른 기기에서도 똑같은 IP가 나오는걸 보면서 'IP는 고유한 번호 아닌가?'라고 궁금증이 들었을 수도 있다. IP는 고유한 번호가 맞다. 그럼 어떻게 다른 기기랑 IP 주소가 같은걸까? '192.168.*.*'는 '가짜'주소이기 때문이다. 그리고 이 '가짜' 주소를 가능하게 하는 프로토콜이 NAT[Network Address Translation]이다. 이러한 '가짜' 주소는 왜 필요한걸까? 현재 디.. 네트워크 계층 - 경로 설정 프로토콜 #3. OSPF와 BGP. 앞 포스팅에서 다익스트라와 벨만 포드 알고리즘에 근거한 LS와 DV에 대해 다루었다. 그러나, 해당 알고리즘을 활용하여 전체 네트워크를 다룰 수 있을까? 답은 다룰 수 없다. 첫 번째는 확장성에 대한 문제다. 라우터의 수가 굉장히 많기 때문에 세상에 존재하는 모든 라우터와의 거리를 계산하기 위해서는 통신, 계산, 메모리에 대한 오버헤드가 걷잡을 수 없이 크다. 두 번째는 관리의 어려움이다. 각 라우터를 관리하는 관리자[ISP, Internet Service Provider]는 각자의 입맛마다 다른 알고리즘을 활용하고 싶을 것이다. 따라서 등장한 것이 OSPF와 BGP 프로토콜이다. 해당 프로토콜들은 각각의 라우터 하나하나를 다루는 것이 아니라 라우터를 집합으로 묶은 후, 이 집합에 대해서 경로를 설정한다.. 네트워크 계층 - 라우팅 알고리즘 개요 (링크상태, 거리벡터) 네트워크 계층은 제어 영역과 데이터 영역으로 나누어 진다는 말을 앞선 포스팅에서 언급했었다. 해당 포스팅에서는 제어 영역에서 이루어지는 활동인 '라우팅'에 대해 살펴볼 예정이다. 라우팅이란 네트워크 현황을 조사하여 데이터를 전송할 수 있는 최적의 경로를 설정하는 활동이고, 이러한 라우팅의 결과로 포워딩 테이블이 생성된다. 이러한 라우팅 방식은 크게 두 가지로 나눌 수 있다. 첫번째는 라우터 별 제어[Per-Router Control]다. 해당 방식은 전통적인 라우터가 사용하는 방식으로 각각의 라우터에서 동작하기 때문에 분산 제어 방식이다. 즉 하나의 라우터는 라우팅도 하고 포워딩도 하는 방식이다. 이러한 제어방식을 사용하는 프로토콜은 OSPF와 BGP가 있다. 두번째는 SDN이 채택하여 사용하는 중앙 집.. 이전 1 2 3 다음 목록 더보기