본문 링크
용과 같이 – 유신 : http://www.slideshare.net/agebreak/141004-cedec-2014-1
MSDN : http://msdn.microsoft.com/en-us/library/ms686749.aspx
WIKI : http://en.wikipedia.org/wiki/Thread-local_storage
Optimizing software in C++ : http://www.agner.org/optimize/optimizing_cpp.pdf
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
클라이언트 개발자들은 직접 서버와 네트워크를 다루지는 않더라도 컴퓨터 네트워크의 특징에 대해서는 알고 있어야 한다. 본 강연은 클라이언트 개발자들이 반드시 알아야 하는 컴퓨터 네트워크 관련 용어와 특징을 소개한다. 아울러 스마트폰 무선 네트워크 관련해서 주안점도 다룬다.
본문 링크
용과 같이 – 유신 : http://www.slideshare.net/agebreak/141004-cedec-2014-1
MSDN : http://msdn.microsoft.com/en-us/library/ms686749.aspx
WIKI : http://en.wikipedia.org/wiki/Thread-local_storage
Optimizing software in C++ : http://www.agner.org/optimize/optimizing_cpp.pdf
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 에서 확인하실 수 있습니다.
3. 개요
• 이름: Network Project(CSMA/CD + IP + TCP)
• 개발 인원: 1
• 기간: 2016.09 ~ 2016.12
• 개발 환경: sublime text3, ubuntu
• 사용 언어: python
• 링크: https://github.com/lights93/network_project
4. 소개
• 네트워크 구조
• router – 파란색
• end_node – 노란색
• port_number – 초록색
• bandwidth – 검은색
오른쪽의 그림과 같은 네트워크를
가정하여 구현했습니다.
5. 소개
• CSMA/CD 구현 내용
• 전송 중인 노드에서 다른 노드의 패킷의 첫 부분이 도착했을 때,
collision이 발생한 것을 확인하도록 구현
• CSMA/CD 지속 방식 중에 p-persistent를 이용하여 재충돌 방지
6. 소개
• IP(link state routing protocol) 구현 내용
• 각 router에서 다른 router로 가는 최단 경로를 Dijkstra 알고리즘으로
구하고, routing table 생성
• router들의 연결이 끊어지거나 새로 생길 수 있으므로, 각 router에서
주기적으로 version이 있는 패킷을 보내 자신의 정보를 알리도록 구현
7. 소개
• TCP 구현 내용
• 160bit의 TCP header 구현
• connection establishment process 구현
• connection termination process 구현
• congestion control 구현
• flow control 구현
8. 코드 설명
• 다른 노드로 부터 packet의 시작
부분이 도착했을 때, 현재 노드에서
도 패킷 전송을 하려고 했을 때,
collision임을 확인합니다.
• collision이 끝났을 때 p-persistent
방식으로 다시 전송을 시도하도록
타이머를 설정했습니다.
9. 코드 설명
• router의 연결이 끊어졌을 때,
r_list(라우터 리스트)에서 해당 router를
뺀 뒤, Dijkstra 알고리즘을 사용하여
새로운 router table을 생성합니다.
• 새로운 router가 연결됐을 때,
r_list(라우터 리스트)에 새로운 router를
추가한 뒤, Dijkstra 알고리즘을
사용하여 새로운 router table을
생성합니다.
10. 코드 설명
• 패킷을 받았을 때 TCP헤더를
확인합니다. ACK, SYN, FIN을
확인하여 받은 패킷을 상황에
맞게 처리합니다.
11. 코드 설명
• 전송하기 전에 받을 노드에 패킷을
저장할 공간이 있는 지 확인합니다.
공간이 없다면 probe 패킷을 보내
공간이 생기는 것을 확인합니다.
• timeout으로 재전송할 때는
congestionwindow를 1로 설정하고,
duplicated ack로 재전송할 때는
congestionwindow를 threshold
+2의 값으로 설정합니다.