본문 바로가기

CS지식/컴퓨터네트워크

WireShark 로 DHCP 통신 캡쳐하기, 캡처된 프로토콜의 기능 확인하기 DHCP는 컴퓨터가 인터넷을 하기 위해서 필요한 IP 및 네트워크 정보를 할당해주는 프로토콜이다. DHCP 통신은 4way handshake 통신을 한다. 1. (DHCP Discover)클라이언트가 자기로부터 접속될 수 있는 다른 호스트들에게 메세지를 날린다. 이때 클라이언트는 임시 ip 주소와 포트번호를 가지고 자신이 접속하고자 하는 DHCP 서버의 ip를 목적지 주소로 하는 패킷을 브로드캐스트한다. 이때 transaction ID를 함께 패킷에 담아 보낸다. 2. (DHCP Offer) DHCP 서버가 사용 가능한 ip 주소가 담긴 패킷을 응답한다. 이때, 목적지 주소를 모르니 브로드캐스팅한다. 요청 클라이언트는 포트번호와 trancaction id를 통해 자신에 대한 응답이라는 것을 알 수 있다... 더보기
Host NetWork Tools 사용 실습 보호되어 있는 글입니다. 더보기
네트워크 계층에 대한 정리 (계층 별 Switch 정리) L7 : Application 계층 - 사용자에게 서비스를 제공하는 역할. SMTP,FTP,HTTP 등 L6 : Presenctation 계층 - 데이터의 변환, 압축, 암호화를 담당 L5 : Session 계층 - 통신하는 프로세스 사이의 대화 제어 및 동기화 담당 L4 : Transport 계층 - end system 내에서 최종 수신 프로세스로의 전달을 담당한다. port 번호로! TCP, UDP L3 : Network 계층 - 송신 측에서 최종 목적지까지 패킷을 전달. 경로를 배정하는 라우팅 기능 IP, ARP, ICMP,OSFP 등등 L2 : Data Link 계층 - 노드와 노드 사이의 데이터 전달. LCC, MAC 두 개의 서브레이어로 구성 Ethernet, ADCCP 등 L1 : Physi.. 더보기
소켓 프로그래밍 과제 3번 과제 3번) 서버에 수식을 보내서 계산하는 계산기 프로그램을 만들어라. 값을 반환하여 server의 화면에 보여라. (stack 이용한 계산기 프로그래밍) 우리가 계산식을 쓸 때 사용하는 방법은 '중위표기식(infix expression)'이다. 2+3 과 같이 숫자들 사이에 연산자가 들어가는 방식이다. 사람이 눈으로 보면서 계산할 때에는 중위 표기식이 좋지만 컴퓨터는 앞에서부터 차례대로 데이터를 읽고 공간을 왔다갔다 하는데에 시간이 낭비되므로 '후위표기식(profix expression)' 이 더 적합하다. 후위 표기식은 23+와 같이 연산자를 피연산자 뒤에 놓는다. 중위표기식을 후위표기식으로 바꾸는 데에는 규칙이 존재한다. 우선 연산자를 담을 스택을 만들어주어야 한다. 1 . 피연산자는 그대로 출력한.. 더보기
소켓 프로그래밍 과제 2번 문제 2번 ) client에서 파일 이름을 서버에 보내면 서버에서 파일에 접근해 파일의 내용을 읽어서 다시 클라이언트에게 리턴해주어라. 또한, 서버에 파일을 쓰는 것도 구현하여라. fcntl.h 라이브러리를 include하여서 파일 입출력을 수행할 수 있도록 만들었다. 만약 클라이언트가 rd를 입력하면 파일을 읽는 동작을 수행한다. fopen을 통해서 파일을 읽기 권한으로 오픈하고, 내용을 buf에 저장한 후 클라이언트에게 전송한다. 클라이언트가 wrt를 입력하면 파일을 쓰는 동작을 수행한다. fopen을 "w" 옵션으로 열면 파일이 생성된다. 그 후에 클라이언트에게서 입력받은 파일 내용을 생성한 파일에 쓰고 파일을 닫는다. //sol2_server.c #include //표준 입출력 라이브러리 #inc.. 더보기
소켓 프로그래밍 과제 1번 1번 문제: Client에서 문자를 서버에 보내면 서버는 클라이언트의 문자를 받아서 아스키코드로 리턴. 클라이언트의 화면에 다시 보여라. Window에서 리눅스 프로그래밍을 구현하기 위해 아래의 블로그를 참고하여 리눅스 환경을 구현하였다. https://jhnyang.tistory.com/441 [WSL]윈도우에서 리눅스 설치해 배시 사용하기 - 윈도우 우분투 안녕하세요 양햄찌 블로그 주인장입니다. 보니까 g++이 리눅스 기반이라서 소스가 여러개일 경우 다중컴파일이 안되더라고요 ㅎㅎ 터미널을 윈도우에서 bash로 바꿔줘야하는 일이 생겨,, 오늘은 jhnyang.tistory.com https://jhnyang.tistory.com/entry/VScode-CC%EA%B0%9C%EB%B0%9C-%EB%B9%.. 더보기
Transport Layer(전송 계층) _ TCP TCP는 연결형 프로토콜이다. TCP프로토콜을 사용하면 송신측과 수신측의 가상의 연결을 설정해 데이터를 교환하고 연결을 해제한다. 송신측은 다중화, 수신측은 역다중화를 수행한다. 그리고 TCP 서비스는 양방향 전송을 수행하고 전송할 때 전송할 데이터와 수신한 데이터에 대한 확인 응답을 함께 보내는 피기배킹(piggybacking)을 한다. TCP 프로토콜의 특징을 하나하나 살펴보자. TCP 프로토콜의 특징 신뢰성있는 데이터 통신 연결형(Connection-Oriented) 흐름제어(Flow Control) 혼잡제어(Congestion Control) 스트림 통신 신뢰성 있는 데이터 통신 응용 계층에는 보내는 프로세스와 받는 프로세스가 존재한다. 만약 신뢰성 있는 프로토콜을 사용하게 되면 받는 프로세스는 .. 더보기
Transport Layer(전송계층), UDP 이제부터 전송계층에 대해 공부할 것이다. 응용계층 아래에 있는 계층이 바로 전송계층이다.전송 계층에서는 프로세스들 간에 논리적인 연결이 이루어 지도록 서비스한다. 그렇다면 프로세스란 정확히 무엇일까? 프로그램 vs 프로세스 물리적으로 하드 디스크에 저장되어 있는 실행 파일을 프로그램이라고 한다. 인터넷 브라우저나 ms office, 카카오톡 등이 모두 프로그램이다. 프로그램이 실행되면 하드디스크에 있던 파일이 메모리로 올라와 실행되는데, 이때 실행되는 프로그램을 프로세스라고 한다. 하나의 프로그램은 하드디스크에 하나만 존재한다. 그러나 하나의 프로그램을 여러개 실행하면 여러개의 프로세스가 생성된다. 하나의 프로세스 안에서 여러가지의 작업이 수행될 수 있는데, 이 작업을 한번에 수행하기 위해 도입된 개념이.. 더보기