2025/04 9

[컴퓨터 네트워크] - Application layer_Web과 HTTP(1)

지난 글에, Application layer의 프로토콜 예시 중 HTTP를 언급했다. 이번 글에서는 이 HTTP와 Web에 대해서 정리해보려고 한다. 솔직히 컴퓨터 공학과 학생이라면 웹 개발을 한 번쯤은 경험을 해봤거나 한 번쯤 만들어보고 싶다는 생각이 들 것이다. 그만큼 컴퓨터 공학과 학생에게는 친숙한, 떼어 놓을래야 떼어 놓을 수 없는 관계인 것 같다. 그렇지만 Web이 무엇이냐고 물어보면, web에 대해서 자신있게 설명할 수 는 없을 것 같았다. 그렇기 때문에 이번에 확실히 짚고 넘어가고, 다음에 누군가에게 이 질문을 받았을 때 컴퓨터 네트워크에서 배우고 정리했던 경험을 통해 자신있게 답하고 싶다. 1. Web이란? 먼저, 간단하게 Web에 대해서 정리해보고 넘어가보자. 웹은, object들..

[알고리즘 분석] - 피보나치

1. 피보나치 수열- 피보나치 수열알고리즘 측면에서 피보나치 수열을 들여다 보기 전에, 수학에서의 피보나치 수열을 정의하려고 한다. 피보나치 수열은 점화식으로 표현되는데 점화식은 다음과 같다.위 그림과 같이 피보나치 수열을 정의하면, F2부터는 그 전의 두항의 합이다. - 피보나치 수열_Python 그럼 위 피보나치 수열을 코드로 작성하면 어떻게 될까? 파이썬으로 나타내보자.def fib(n): if n == 0: return 0 if n == 1: return 1 else return fib(n-1)+fib(n-2) 위와 같이 파이썬 프로그램으로는 간단하게 재귀적 호출로 나타낼 수 있다. 이 코드로 fib(10)을 출력하면 fib(10) = 55라는..

[알고리즘 분석] - 수도코드 및 시간 복잡도

1. 알고리즘 분석 프롤로그- 수도코드(pesudo code) 프로그램을 작성할 때 수도코드로 우리가 작성하는 이유는 무엇일까? 이런 것까지 정리해야되나 싶지만 그래도 이유를 알고 나면 다음에 수도 코드에 대한 거부감은 없을 것 같으므로 정리는 해두려고 한다. 수도 코드에 대해 알아보자. 수도 코드는 알고리즘을 프로그래밍 언어로 구현할 때, 알고리즘의 흐름을 정리하기 위해, 언어 자체로 작성하기 보다, 사람이 작성할 때 조금 더 편한 쪽으로 작성한 코드이다. 그렇다고 개발자에 의해 막 작성된 코드는 아니고, C언어의 if, for 문 등 기본적인 문법자체는 지키면서 작성된 코드이다. 다음은 수도 코드의 장점이다.알고리즘 분석 및 수정 시 편리하다.유지 보수에 유리하다.협업 시 수도 코드를 보고 의견 ..

[컴퓨터 네트워크] - Application layer_프롤로그

지금부터 앞글에서 설명했던 5계층 중 Application layer에 대해서 정리해보려고 한다. 앞으로의 Application 정리글에서는 다음과 같은 내용이 있을 것이다.transport 계층으로 부터 어떤 것을 이용하는지peer-to-peer paradigmHTTP, DNSsocket API위의 4개 말고도, social networking, Web, e-mail, streaming stored video(YouTube, Netflix), P2P file sharing 등에 대해서도 정리할 예정이다.1. Principles of network applications 이번 글에서는 application principle, 즉 application protocol을 어떻게 생성할지에 대해 알아보려고 한..

[컴퓨터 네트워크] - Protocol layers와 Encapsulation

지난 정리글에서는 보안과 역사에 대해서 정리했다. 이번 글에서는 protocol의 계층들에 대해서 정리해보려고 한다.  protocol은 앞서 Network에서 사용하는 규칙이라고 했는데, Network에서는 5계층이 존재한다. 이 5계층에 대해 정리하기 전에 이와 비슷한 구조를 가진 비행기 여행으로 예시가 있다. 비행기로 여행을 가려면, 위의 순서로 진행된다.티켓을 구매하고,짐을 부치고,게이트를 통과하고,이륙장에서 이륙하고비행기가 목적지 경로를 설장한 뒤 이동한다. 비행기가 목적지에 다다르면, 위 과정과 반대로비행기가 목적지에 도착하면,이/착륙장에서 착륙하고출국장 게이트를 통과하고,짐을 다시 찾고티켓을 판매하진 않지만 여기서는 비행중 피드백을 작성하는 것이라고 했다.즉, 반대 과정과 정확히 Mappin..

[컴퓨터 네트워크] - Network Security & Internet History

이번 글에서는 network security와 internet history 대해서 정리할 예정이다. Network는 처음부터 보안을 고려하지 않고 만든 것이었다. Network는 전쟁 중 군대에서 아군끼리 쓰려고 설계되었기 때문에 서로 신뢰하는 사용자들끼리만 사용했던 것이다. 그렇기 때문에 보안은 염두해 두지 않고 만들다가, 대중화가 시작되며 여러 문제가 발생하기 시작했고, 그때부터 원래 있던 network에 보안이 얹어진 구조가 되었다.1. Newtork Security 그럼 지금부터는어떻게 인터넷을 공격하는지,어떻게 공격으로 부터 보호해야하는지에 대해서 고려해봐야 한다. 1번부터 한 번 알아보겠다. 1.1 Bad Guys- Packet Interception Packet Interception은 말..

[컴퓨터 네트워크] - Internet Structure & Packet delay

앞 장에서 network core에 대해서 더 자세히 다뤘다. 이번에는 Internet에 대해서 더 자세히 알아보고 저번 글에서 정리했던 Packet delay와 인터넷 Throughput에 대해서 정리해보려고 한다. 1. Internet Structure: Internet(=network of networks) 컴퓨터 네트워크 맨 처음 정리글에, Internet은 network of networks라고 정리했다. end systems(hosts)들은 ISP에 접근을 통해 Internet에 연결한다. ISP에는 상호 연결이 돼있어야 두 호스트들이 데이터를 서로 주고 받을 수 있다. 여기서 생기는 궁금한 점, 왜 ISP가 필요할까? 왜 access network가 필요한 것일까?  그 이유는 다음과 같다...

[컴퓨터 네트워크] - Network Core(Packet-switching, Circuit-switching)

저번 글에서는 Access Netoworks와 Physical Media에 대해서 정리해보았다. 이번 글에서는 Network Core에 대해서 알아보도록 하자. 1. The network Core 네트워크 코어는 첫 번째 글에서 나왔듯이, switch와 router가 있다. 다음 그림을 보면 알 수 있듯이, 이 라우터들끼리 연결돼 network를 구성하기도 한다. 이 네트워크 코어의 특징은 mesh, 즉 특정 형태 없이 무작위로 연결돼 있다는 특징이 있다. 이런 특징을 가지고 있는 이유가 있다. 바로 트래픽이 한 쪽에 몰리지 않게 하기 위함이다. 트래픽이 한 쪽에 몰리게 된다면 mesh하게 연결돼 있다는 특징을 이용해 우회를 통해 서비스가 중단되는 문제점을 보완한 기술이다. 첫 번째 글에서도 나온 부..

[컴퓨터 네트워크] - Access Networks & Physical Media

1. 네트워크 엣지(Network Edge)- 네트워크 엣지와 router의 연결 방식(Access Networks) 지난 글에서 Internet의 구성요소를 살펴보며 network edge와 router를 봤을 것이다. 그런데 network 엣지들과, 즉 host(client 및 server)와 router는 어떻게 연결해서 Internet(=network of networks)을 구성할까? 다음 세 가지 를 알아보자.residential access netsinstitutional access netwokrs(school, company)mobile access networks(WIFI, 4G/5G) 위에서 부터 차례대로 알아보자.- Residential Access Networks(집 네트워크) 집..