충남대학교 컴퓨터공학과 김상하 교수님의 "데이터 통신" 강의를 필기한 내용입니다.
다소 잘못된 내용과 구어적 표현 이 포함되어 있을 수 있습니다.
Peer 2 Peer(P2P)
- 토렌트 생각하면 된다 - 컴퓨터끼리 대등하게 동작한다 즉, 하나의 컴퓨터가 서버 혹은 클라이언트의 지위를 가지는 기존의 네트워크 체계와는 다르게 p2p에서는 컴퓨터 한대가 클라이언트 이자 서버인 두가지 역할을 하게 되는 것
- 클라이언트-서버 네트워크와 대비되는 또하나의 네트워크 체계인 것
Data layer
- Physical layer로부터 받은 전기적 신호의 오류를 검출하고 그 오류를 수정하는 기능적/절차적인 수단을 제공해주는 계층
부계층 - MAC
- 디바이스의 물리적인 주소값을 말한다?
- 전송받은 데이터에 저장되어있는 MAC주소를 보고 올바르게 수신되었는지 판별하여 상위계층으로 보내는 등의 역할을 한다
부계층 - LLC
- 얘네는 디바이스 들 간에 존재할 수 있는 프로토콜 간의 차이를 보완해 주는 역할을 한다
데이터 전송방식
- UNICAST : 1:1 통신을 일컬음 → Point 2 Point communication → 여러명한테 보내고 싶으면 여러번 보내야 된다 → 또한 제한된 회선을 나눠써야 하기 때문에 불편하다
- BROADCAST : 연결된 모든 디바이스한테 데이터를 뿌리는 방식 → Ethernel layer에서는 주소의 모든 자릿수가 F인 주소를 사용한댄다
- MULTICAST : 연결된 모든 디바이스들 중 특정한 디바이스들한테만 데이터를 전송하는 방식 → 개인이 아니라 그룹한테 데이터를 보내는 것
Ethernel Protocol
- 근거리 유선망인 Ethernel에서 주로 사용하는 규격
- 물리계층의 신호와 배선, 데이터링크 계층에서의 MAC규격 등을 정의한다
- 상위계층에서 데아터 링크 계층으로 데이터를 보내면 데이터 링크 계층에서는 이것을 프레임이라는 전송 단위로 변환한다 - 이 프레임의 크기는 최대 1500바이트이랜다
- 그리고 여기에 송수신 이더넷 주소를 헤더로 붙여 하위계층인 물리계층으로 보내게 되는 것
- 수신할때는 물리계층으로부터 데이터 링크 계층으로 프레임 데이터를 받으면 이더넷 주소의 모든 숫자가 F이거나 자신의 이더넷 주소와 같을 경우 상위계층으로 보내고 아닐 경우에는 폐기하게 된다
- 그리고 프레임 헤더 중 16비트 프로토콜 타입 필드란 곳이 있는데 이곳에 상위 어떤 계층으로 이 데이터를 보내야 하는지에 대한 정보가 담겨 있다
랜카드, 네트워크 어댑터
- 네트워크 연결 및 데이터 전송을 담당
실습에서 사용할 프로그램들
Winsock
- network layer까지 접근 가능한 internet program 개발용 api다
Packet driver
- data link layer까지 접근 가능하다
- 다만 직접 구현해야 될 부분이 많기 때문에 winsock보다 사용하기 불편하댄다
jNetPcap
- 실습에서는 자바 기반의 패킷 프로그램인 jNetPcap을 사용한다
- WinPcap이라는 프로그램을 기반으로 하기때문에 이게 반드시 깔려 있어야 한다
Byte Ordering
- 컴퓨터 종류에 따라 데이터를 메모리에 어떻게 저장하는지를 결정하는 것
- 컴퓨터마다 데이터를 쪼개어서 저장할때 어떻게 저장하는지가 다 다른데 이것을 자기 컴퓨터에 맞게 변환하지 않으면 에러가 날 수 있다
- 따라서 플랫폼에 구애받지 않는 표준 규격 을 만들어 낸 것이 Byte Ordering이다
Big Endian
- 매킨토시 pc의 계열에서 쓰인다
- 바이트의 높은 자릿수에 위치하는 데이터부터 메모리에 적재되는 방식 - Network Byte Order라고 한다
- 예를들어 0x12345678을 저장할때 얘는 메모리에 12, 34, 56, 78이렇게 저장한다
Little Endian
- 인텔계열의 pc에서 쓰인다
- 바이트의 낮은 자릿수에 위치하는 데이터부터 메모리에 적재되는 방식 - Host Byte Order라고 한다
- 예를들어 0x12345678을 저장할때 얘는 메모리에 78, 56, 34, 12이렇게 저장한다
- 이 두 방식을 이용해 네트워크로부터 받은 데이터를 자기 컴퓨터에 맞게 새로 재구성하는 작업을 거친다