The document discusses using logic gates and switches to simplify boolean expressions and create circuit diagrams to represent them. It explains how a circuit with switches can represent boolean logic to make certain input values result in true outputs. Specifically, it talks about using relays which can control switches with electric signals, and how relays allow building circuits to perform simple logic operations and potentially make an adding machine by combining relays, switches, batteries, and lightbulbs.
The document describes a generic arithmetic system that allows uniform access to number packages with different data representations. It defines generic arithmetic procedures like add, sub, mul, and div that apply the corresponding operation for the specific number package. A scheme-number package for integer arithmetic is also installed. Generic tags are attached to values to identify their representation, and a mapping table is used to dispatch operations to appropriate handler procedures based on tags.
The document describes the process of developing a domain model for PCB analysis software through collaboration between developers and domain experts. The experts initially struggled to describe their needs, but discussions helped identify key concepts like nets, pins, and signal propagation. Diagrams were used to illustrate object interactions. An early prototype using the model classes demonstrated the core functionality and helped refine the model.
The document discusses refactoring methods to simplify method calls. It describes techniques such as renaming methods for clarity, adjusting parameter numbers, hiding unnecessary information, replacing constructors with factory methods, and improving exception handling in methods. Specific refactoring techniques covered include renaming methods, adding/removing parameters, separating queries from modifiers, and parameterizing methods. The overall goal of these refactoring methods is to make code more readable, reusable and maintainable.
The document discusses microformats, which are a way to embed structured data into web pages. It provides examples of how microformats like XFN, geo, hRecipe and hReview can be used. A breadth-first crawl is proposed as a way to extract relationship data from XFN markup. Geo coordinates are also discussed as a common thread that can be used across different types of data and applications.
This chapter discusses clustering connections on LinkedIn based on job title to find similarities. It covers standardizing job titles, common similarity metrics like edit distance and Jaccard distance, and clustering algorithms like greedy clustering, hierarchical clustering and k-means clustering. It also discusses fetching extended profile information using OAuth authorization to access private LinkedIn data without credentials. The goal is to answer questions about connections by clustering them based on attributes like job title, company or location.
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
클라이언트 개발자들은 직접 서버와 네트워크를 다루지는 않더라도 컴퓨터 네트워크의 특징에 대해서는 알고 있어야 한다. 본 강연은 클라이언트 개발자들이 반드시 알아야 하는 컴퓨터 네트워크 관련 용어와 특징을 소개한다. 아울러 스마트폰 무선 네트워크 관련해서 주안점도 다룬다.
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원탑크리에듀(구로디지털단지역3번출구 2분거리)
탑크리에듀(www.topcredu.co.kr) 제공 C#, Network 기초강좌 입니다. 이번 강좌는 클라이언트가 서버로 데이터만 전송하는 간단한 TCP 클라이언트 및 서버 작성부터 서버가 다시 클라이언트로 에코우 시키는 예제, 이를 멀티쓰레드로 변경하여 여러 클라이언트를 상대할 수 있도록 소스를 변경하여 적성된 예제 입니다. 동영상으로도 제작될 예정이며 동영상은 http://www.topcredu.co.kr 또는 http://www.facebook.com/topcredu.co.kr, http://ojc.asia 에서 확인하실 수 있습니다.
한대희 Web proxy_개발_2006년11월_pas_ktfDaehee Han
스마트폰이 대중화되기 직전까지 KT이동통신(KTF)의 모든 단말기가 인터넷 콘텐트 접속시에 거쳐가는 Web Proxy (PAS라 불림)를 바닥부터 새로 개발한 개발 기록. multi thread 기반으로 동작. 한 thread에서 여러 단말(client)처리. Multi-connection per thread. ACE framework사용. Reactor패턴 사용. 부하(동시접속 단말 개수)에 따라 reactor thread 개수를 동적으로 자동 조절하는 pool 방식 구현. 설계를 다시하고 밑바닥부터 새로 만듦. 200TPS 의 기존 성능을 1,000 TPS 로 올림. 5~6번의 deploy 작업 끝에 memory leak 문제 등 모든 문제 해결하고, 30일 넘게 운영해도 죽지 않는 서버로 구현함. 2006년.
2. UDP
❖특징
➢ 비연결 : 연결 설정 / 종료 과정이 없다.
➢ 비전송 보장 : 데이터 전달을 보장하지 않는다. (비신뢰성)
➢ 연결 상태가 존재하지 않는다.
➢ 오버헤드가 적다.
➢ TCP에 비해 속도가 빠르다.
➢ DNS, IPTV, VoIP, TFTP, IP Tunneling 등에서 활용된다.
3. UDP
❖헤더 구조
➢ Source Port (16) : 송신 호스트 포트 번호
➢ Destination Port (16) : 수신 호스트 포트 번호
➢ Length (16) : UDP Header를 포함한 UDP Segment 전체 크기
➢ Checksum (16) : 헤더와 데이터 부분의 무결성을 검증하기 위한 필드
4. UDP
❖UDP 송수신 버퍼 설정
➢ OS에 설정된 <UDP 송수신 버퍼 크기>를 초과하는 데이터를 전송하면 제대로 수신되지 않는
다.
➢ Linux(Ubuntu 16.04)의 UDP 송수신 버퍼 확인
5. DNS
❖DNS (Domain Name System)
➢ “IP 주소”와 “사람이 이해하기 쉽게 기억할 수 있는 이름”을 상호 변환해주는 분산 데이터베이스
시스템
➢ 일반적으로 UDP 포트 53번 사용
➢ DNS 헤더를 포함한 DNS 메시지 영역의 길이가 512 Byte를 초과하거나, Zone Transfer 과정에
는 TCP 포트 53번 사용
❖DNS 프로토콜
➢ 조회 / 질의 (Query)
➢ 응답 (Response)
6. FTP
❖FTP (File Transfer Protocol)
➢ 서버 - 클라이언트 간 파일을 전송하기 위한 프로토콜
➢ 두 개의 네트워크 연결을 사용하여 동작
■ TCP 21번 포트를 사용하는 명령 연결(FTP)로서 인증 및 제어에 사용
■ 실제 파일을 전송할 때 만들어지는 파일 전송 연결 (FTP-DATA)
❖파일 전송용 연결 방식
➢ 능동 모드 (Active Mode)
➢ 수동 모드 (Passive Mode)
8. 네트워크 데이터 수집시 고려사항
❖ <최대 패킷 크기>는 명시적으로 지정한다.
➢ 패킷의 일부 정보만 수집해서는 내용을 정확히 분석하기 어려움
➢ MTU (Maximum Transmission Unit) : IP 패킷의 최대 크기
➢ MSS (Maximum segment Size) : TCP에서 전송할 수 있는 최대 애플리케이션 데이터 크기
❖ 서버에서 데이터를 수집하는 경우 <호스트>와 <포트>는 꼭 지정한다.
➢ 분석할 대상을 선정하여 범위를 줄여 데이터를 수집하기 위함
9. 네트워크 데이터 수집 (유닉스 / 리눅스)
❖tcpdump
➢ 주어진 조건식(expression)을 만족하는 패킷들의 헤더를 출력해 주는 프로그램
➢ 사용법
# tcpdump [각종 옵션들] [조건식(expression)]
➢ 조건식 : 여러 조건을 사용할 경우 <and, and not, or>로 조합 가능
10. 네트워크 데이터 수집 (유닉스 / 리눅스) : 계속
❖tcpdump 옵션
구분 옵션 설명
NIC -i [device] 수집할 네트워크 디바이스를 지정
저장 방법
-w [filename] 저장할 파일명 지정
-C [filesize]
수집된 데이터를 저장하는 파일 크기를 Byte 단위로 지정
-w 옵션에 지정된 파일명에 1, 2, 3 순으로 순차 번호가 붇는다.
-G [seconds] 지정한 초 단위만큼 데이터를 나눠 여러 파일에 저장
-c [count] 제시된 count 만큼 패킷 수집 후 종료
-s [packetsize]
수집할 패킷 크기 지정 (default : 68byte)
전체 패킷으로 정확한 분석을 위해 충분히 크게 조절 필요
11. 네트워크 데이터 수집 (유닉스 / 리눅스) : 계속
❖tcpdump 옵션
구분 옵션 설명
출력방법
-n, -nn
n : 호스트 IP를 서버명으로 변경하지 않음
nn : 호스트 IP와 포트를 모두 서버명과 포트명으로 변경하지 않음
-S TCP 시퀀스 번호를 절대 번호로 출력
-t 시간을 출력하지 않음
-tt, -ttt, -tttt, -ttttt
tt : 1970년부터 경과 시간을 소수점 포함 초단위 시간으로 출력
ttt : 이전 패킷과 시간 차를 마이크로초 단위로 출력
tttt : 시, 분, 초 시간으로 출력
ttttt : 첫 패킷 이후 경과 시간을 마이크로초 단위로 출력
-v, -vv, -vvv v가 추가될 때마다 출력되는 패킷 정보가 증가
12. 네트워크 데이터 수집 (유닉스 / 리눅스) : 계속
❖tcpdump 필터
항목 설명
[ dst | src ] host HOST <IP 주소 or 도메인명>을 지정하여 수집
[ dst | src ] port PORT <포트 번호 or 포트 서비스명>을 지정하여 수집
[ dst | src | host ] ether EHOST <MAC 주소>를 지정하여 수집
[ dst | src ] net NET <IP 네트워크>를 지정하여 수집
[ less | greater ] LENGTH 지정된 LENGTH보다 작거나 큰 패킷만 수집
protocol ip, tcp, udp 같이 지정된 프로토콜 데이터 수집
protocol[ index | index:size ]
프로토콜의 상세 조건을 지정하여 데이터 수집
- index : 헤더 시작 부분을 0으로 하는 바이트 단위 인덱스 값
- size : 인덱스를 기준으로 읽을 바이트 수
13. 네트워크 데이터 수집 (윈도우)
❖Wireshark (https://www.wireshark.org/)
➢ 오픈소스 패킷 분석 도구
➢ 앞서 소개한 tcpdump와 기능적으로 유사하지만 그래픽 환경이다.
➢ GUI 환경이 아닌 터미널 기반의 TShark도 제공된다.
14. 네트워크 데이터 수집 (윈도우)
❖Wireshark를 이용한 데이터 수집 방법
1. Capture -> Options 선택
2. NIC 목록에서 데이터 수집 할 네트워크 인터페이스 선택
3. 네트워크 필터 설정 (tcpdump의 expression과 비슷)
4. 저장할 파일명, 경로 지정
5. Start 버튼을 클릭하여 네트워크 데이터 수집 시작
15. 네트워크 데이터 수집 (윈도우) : 계속
❖Wireshark 화면구성
패킷 필터
수집된 패킷 목록
선택된 패킷의
프로토콜 정보
선택된 패킷의
Raw 데이터
16. 네트워크 데이터 수집 (윈도우) : 계속
❖수집한 데이터에서 원하는 데이터만 필터링하는 방법
and(&&), or(||), 괄호(()) 를 이용해 복합적인 필터 사용 가능
17. 네트워크 데이터 수집 (윈도우) : 계속
❖Follow TCP Stream
➢ 선택한 TCP 세션의 패킷만 필터링하여 출력
18. 네트워크 데이터 수집 (윈도우) : 계속
❖ 분석 메뉴 (Statistic 탭)
➢ Summary
■ 패킷 파일에 대한 수집시간, 용량, 개수 등 용약 정보 출력
➢ Protocol Hierarchy
■ 무슨 프로토콜을 사용한 패킷들이 수집되었는지 트리 구조로 출력
➢ Conversation, Endpoints
■ 수집된 패킷이 어떤 호스트와 얼마나 통신하고 있는지 확인
■ Conversations는 두 호스트 간 통신, Endpoints는 연결된 논리 호스트
■ 시스템 구성정보를 모를 경우 시스템 간 어떤 통신이 이뤄지는지 확인할 때 유용
19. 네트워크 데이터 수집 (윈도우) : 계속
❖응답시간 분석
➢ 네트워크 시간 : Statistics -> TCP StreamGraph -> Round Trip Time (Delayed ACK 미설정시)
■ 연결 시간
■ 요청 업로드 시간
■ 응답 다운로드 시간
➢ 서버 시간
➢ 클라이언트 시간
20. 네트워크 데이터 수집 (윈도우) : 계속
❖전문 분석
➢ 원인 파악을 위한 로그가 없을 경우 수행
➢ 해당 프로토콜 정의를 참고해 전문을 구성하는 각 필드 값이 정확한지 확인 필요
이때 Endian을 확인해 바이트 데이터를 숫자로 변환하여 확인 가능
➢ HTTP : 프로토콜 헤더, 일반 본문이 텍스트여서 확인이 쉬움
➢ 일반 바이너리 전문
■ 일반적으로 전문이 시작하는 위치에 2~4 바이트 정도의 전문 크기를 기록
■ 기록된 전문 크기와 실제 전문 크기가 일치하는지 비교하여 분석을 시작
21. 네트워크 데이터 수집 (윈도우) : 계속
❖재전송 분석
➢ 재전송 여부 확인 : “tcp.analysis.retransmission” 필터 적용
➢ 재전송 패킷 구별
■ 원래의 패킷 전체 재전송 : 재전송 패킷은 항상 원래의 SEQ 번호와 일치
22. 네트워크 데이터 수집 (윈도우) : 계속
❖재전송 분석
➢ 재전송 패킷 구별
■ Dup ACK 가 발생한 경우
23. 네트워크 데이터 수집 (윈도우) : 계속
❖성능분석
➢ 재전송 발생 여부 및 비율
■ 로컬 네트워크 <= 0.01%
■ 원거리 네트워크 <= 0.5%
➢ 네트워크 RTT
■ SYN 패킷 주고받는 시간, 데이터 패킷에 대한 ACK 패킷 도착 시간 간격으로 유추
■ 네트워크 및 애플리케이션 턴 수를 줄여 성능 개선
➢ 네트워크 전송량
■ 전송량이 많을 경우 압축, 캐시 등 사용
➢ 클라이언트 / 서버 / 네트워크 구간 응답시간
■ 응답시간이 큰 구간 구별
➢ 각 프로토콜에 특화된 분석
24. ➢ 실무로 배우는 시스템 성능 최적화 (권문수 지음, 위키북스, 2016)
➢ tcpdump 사용설명서 (DASAN Networks, 2005)
➢ Wireshark User’s Guide : https://www.wireshark.org/docs/wsug_html_chunked/
➢ FTP Mode 이미지 : http://hoyatic.tistory.com/165
Reference