본문 바로가기

Computer Science4

[CS] 네트워크 프로그래밍 - WAN, 라우터(Router), 인터넷프로토콜(IP), 인터넷(Global IP Internet) , IP주소, 도메인 네임, DNS, 인터넷 연결(Internet Connections) 네트워크는 서로 다른 기술을 가진 임의의 LAN과 WAN들로 구성되는데, 어떻게 이 기술 차를 극복하고 통신을 할 수 있는 지 물음을 던지며 이전 포스팅을 마쳤다. 이제 이 문제에 대한 답으로 포스팅을 시작하려 한다. 정답부터 얘기하자면, 이 문제는 각 호스트와 라우터에서 실행되는 프로토콜 소프트웨어 (protocol software) 단계(계층)가 서로 다른 네트워크의 차이를 완화해주는 역할을 함으로써 해결된다. 이 소프트웨어는 호스트와 라우터가 서로 데이터를 전송할 수 있게 해주는 규칙(IP 프로토콜)을 실행하고, 이 IP 프로토콜은 아래의 두 가지 역할을 (반드시) 수행한다. Naming Schema : 각각의 호스트가 동일한 형식의 고유한 주소( =IP주소)를 가질 수 있도록 한다. Deliver.. 2022. 11. 5.
[CS] 네트워크 프로그래밍 - 클라이언트 서버 프로그래밍 모델 , 네트워크, 이더넷 네트워크 어플리케이션 웹 서핑, 이메일 수발신, 온라인 게임, 카톡 수발신, 온라인 결제 ... 이들의 공통점은 네트워크 어플리케이션을 사용하고 있다는 것이다. 네트워크에 연결된 컴퓨터 한 대 한 대를 호스트(host) 라고 하는데, 어떤 호스트의 어플리케이션이 다른 호스트의 어플리케이션과 통신하고 있다면 이 어플리케이션을 네트워크 어플리케이션이라고 한다. 네트워크 어플리케이션을 이해하기 위해서는 클라이언트-서버 프로그래밍 모델과, 인터넷에서 제공되는 서비스들을 사용할 수 있는 클라이언트-서버 프로그램을 어떻게 만들 수 있는지를 알아야 한다. 클라이언트-서버 프로그래밍 모델 (The Client-Server Programming Model) 모든 네트워크 어플리케이션은 클라이언트-서버 모델을 기반으로 한.. 2022. 11. 4.
[CS] 기계수준 프로그래밍 - CS:APP 3장 - 프로그래밍의 인코딩 (어셈블리어, gcc 컴파일시스템) 컴퓨터는 기계어 코드를 실행한다. 기계어 코드란 컴퓨터의 여러가지 동작(데이터 처리, 메모리 관리, 데이터 읽기 쓰기 등) 을 인코딩한 연속된 바이트이다. 그러니까 01010111001010101010101001010001010101001010101010000 ... 와 같은 코드를 실행하는데 이 이진수 코드는 바이트 단위로 이루어지고 컴퓨터의 여러가지 동작들을 수행하게 한다는 것이다. 이 기계어 코드는 너-무 읽기 어렵기 때문에 이를 텍스트 형식으로 변환한 코드가 어셈블리 코드이다. 즉 어셈블리 코드는 기계어 코드를 단순히 텍스트로 변환한, 가장 기계어에 가까운 (= 저수준의) 형태의 프로그래밍 언어이다. 리눅스의 기본 C 컴파일러인 GCC C 컴파일러는 C언어로 작성된 C 소스 파일을 어셈블리 코드를.. 2022. 11. 4.
[CS] 동적 메모리 할당 - malloc /free C 언어로 구현하기 part 1. 이론 (📖CS:APP) 🔔 정글 교육과정에 따라 malloc 패키지를 사용하지 않고 직접 동적 메모리 할당기를 구현하는 과정에서 공부한 동적 메모리 할당기 이론 및 코드들을 정리하는 포스팅입니다. " CS:APP (북미판, 글로벌에디션, 한국어 모두 참고) 9.9 장을 공부하며 작성한 글이기 때문에 정보를 드리기 위함보다는 공부한 내용을 정리하기 위한 포스팅이기 때문에 독자들이 읽기에 가독성이 떨어질 수 있음을 미리 알려드립니다 🔔 🚨 1워드가 몇 바이트 인지는 CPU에 따라 다르기 때문에 CS:APP 9장 및 본 포스팅에서는 1워드를 4바이트라고 가정합니다 🚨 C 프로그래머들은 프로그램을 실행하는 중에(runtime) 추가적인 가상 메모리가 필요할 때 동적 메모리 할당기(dynamic memory allocator)를 사용하.. 2022. 11. 3.
반응형