네트워크 디바이스
NIC(Network Interface Controller)
네트워크 장비와 LAN 사이의 통신을 준비
전송될 데이터를 병렬에서 직렬로 전환
빠른 전송을 위해서 데이터를 코딩 및 압축
목적지 장비의 NIC는 데이터를 수신하고 CPU로 데이터를 전달
Access Control 기능이 구현된 하드웨어와 펌웨어가 들어 있다
흔히 말하는 랜카드임.
연결 방식
유선 혹은 무선으로 설계될 수 있다
이더넷, 기가비트 이더넷, 광섬유, 토큰링
네트워크 칩의 예
CS8900A의 특징
Cyrus Logic 에서 개발된 10Mbps를 지원하는 Ethernet Controller
IEEE 802.3 기준을 따르고 Direct ISA-Bus 연결을 사용한다
10BASE-T와 10BASE2, 10BASE5, 10BASE-F를 지원하기 위한 AUI(Attachment Unit Interface)를 가지고 있다
disk가 없는 시스템의 booting을 위한 Boot PROM 지원.
Tx시에는 collision이 있을 때, 자동적인 재전송 및 Padding과 CRC 생성을 해준다.
Rx시에는 CPU의 overhead를 줄이기 위해서 StreamTransfer를 제공
I/O및 메모리 공간과 DMA slave로서 동작할 때 사용하기 위한 Packet Page
EEPROM을 제공하여 점퍼설정을 최소화한 설정이 가능
CSMA/CD 기본 알고리즘
CSMA/CD 두가지 옵션
이더넷 계층 구조
LLC: 흐름제어와 오류 제어를 담당한다.
MAC: CSMA/CD접근 방법에 대한 동작을 담당한다.
프레임의 길이와 데이터의 길이
칩의 레지스터
레지스터의 기본적인 접근 방법
PacketPage Pointer Port를 통해서 접근하며, 기본주소(base address)에 0x000A(ADD_PORT) 를 더해서 결정된다.
레지스터에 있는 데이터를 읽기 위해서는 이 PacketPage Pointer Port에 먼저 레지스터의 offset을 쓰고 나서, data port를 통해서 읽어온다.
쓰는 것도 역시 PacketPage Pointer Port에 먼저 레지스터의 offset을 쓰고 나서, data port에 쓸 내용을 적어서 처리한다.
네트워크 소켓
네트워크는 소켓(Socket)으로 관리
소켓이라는 단일한 인터페이스로 묶어서 사용
네트워크를 초기화하여 다양한 통신 수단을 사용
운영체제의 파일시스템과 연동하여 구성
상위에서 보면 파일처럼 다루어지게 된다
소켓에서는 socket()과 bind()라는 시스템콜 함수를 이용
소켓(Socket)의 구현 정보
정의
소켓 프로그램에 있어서 로컬 호스트에서 실행되는 프로세스와 원격 호스트에서 실행되는 프로세스간에 데이터를 교환하기 위해 요구되는 정보
종류
프로토콜 식별자, 로컬 인터넷 주소, 로컬 포트 번호, 원격 인터넷 주소, 원격 포트번호로 구성
구현
네트워크 드라이버는 주소설정, 전송 매개변수 변경, 소통량과 오류통계 유지와 같은 상당수의 관리작업을 지원하도록 설계되어야 한다.
네트워크 계층 역할
연결 유형
Connection – oriented
- 송수신을 위한 연결통로를 만들고 데이터를 전송
- 각 패킷에 대해 라우터는 경로를 다시 계산할 필요가 없다.
- 하나의 메시지에 속하는 모든 패킷이 전달된 후 연결은 종료된다.
Connectionless
- 각 패킷은 상호 독립적으로 취급하며 패킷들 사이에 아무 관계가 없다.
- 같은 목적지로 전달됨에도 불구하고 서로 다른 경로를 통하여 전달 될 수 있다.
IP는 비연결형 프로토콜로서 비연결형 서비스를 제공한다
네트워크를 위한 구성요소
Network service
LAN은 일반적으로 connectionless service를 제공하고 WAN은 connection-oriented service를 제공하는데, 이러한 LAN과 WAN이 서로 연결되는 인터넷에서는 서비스를 연결형으로 제공할 것인가 아니 면 비연결형으로 제공할 것인가를 결정해야 함
Protocol
각 서브 넷마다 사용하는 프로토콜 구조가 다른데, 인터넷에서는 각 서브 넷의 고유한 프로토콜을 유지하면서도 서로 통신할 수 있도록 해 주는 연결 방법 필요
Addressing
각 sub network 마다 사용하는 주소 구조가 다르므로 이러한 기존의 주소 체계는 인터넷에서는 사용 곤란하므로 제 3의 공통 주소 구조 필요
- Ethernet을 통해 인터넷에 접속된 노드 : (48bit의 Ethernet Hardware 주소 + 32 bit IP 주소)
Routing
각 서브넷 마다 routing 기법이 다른데, 이러한 서브넷이 서로 연결된 인터넷 에서 어떻게 목적지까지 정확하게 패킷을 전달할 수 있는가에 대한 고려
- 서브넷의 고유한 routing 기법은 그대로 유지해야 한다.
- 서브넷 내에서는 고유한 물리주소를 사용하여 routing
- 망과 망을 연결하는 라우터 에서는 IP 주소를 사용하여 routing
Quality of Service
자신이 접속된 서브넷에게 자신이 원하는 QoS(원하는 지연시간 한계, 비용 한계, 우선순위, 보안 수준, 허용 에러율)를 요청하고 각 서브넷은 종단시스템의 요구 사항을 재 조정하는 기능이 있음
다양한 QoS 방식을 갖는 서브넷이 연결된 인터넷에서 종단 시스템은 자신에게 허용될 수 있는 QoS를 알 수 있고 또한 지정할 수 있어야 한다.
Maximum packet size
각 서브넷 마다 지원하는 패킷의 최대 길이가 다르므로 인터넷에서 패킷이 각 서브 넷을 경유할 때 중간 노드에서는 segmentation & reassembly 과정이 필요
Flow control & Congestion control
flow control: 서로 다른 서브넷에 접속된 두 노드 사이에도 송신부의 전송 속도 가 수신부의 처리 속도를 초과하지 않도록 하는 흐름제어 기법 필요
congestion control: 인터넷을 구성하는 특정 서브넷에 패킷이 너무 많이 몰리는 현상이 발생하지 않도록 해야 함.
Error reporting
각 서브넷마다 error reporting하는 방식이 다른데, 여러 개의 서브넷이 연결된 인터넷 상에서 공통된 error reporting 기법 필요(Ex: ICMP)
주소 변환(NAT)
변환 테이블
- IP 주소 한 개 사용하기
- IP 주소의 집단(pool) 사용하기
- IP 주소와 포트 번호 동시 사용하기
주소 집단(pool) 사용하기
- 포괄적 주소의 집단 사용
- 사설 네트워크 호스트는 동일한 시간에 2개의 외부 서버 프로그램 (HTTP, FTP)에 접속 불가
IP 주소와 포트 번호 동시 사용하기
- 다 대 다(many-to-many) 연결 허용
- 발신지와 목적지의 전송층 포트번호를 포함한 5개 컬럼 사용
IP 데이터그램 구조
헤더 내의 필드
- VER : IP 버전 정의
- HLEN : 헤더의 전체 길이를 4 바이트 단위로 표시(4비트)
- DS: 차별 서비스(differentiated services)
- 서비스 품질(QoS)을 목적으로 데이터그램 등급을 정의
- DSCP(6bit)-RFC 2474, ECN(2bit)-RFC 3168
- total length
- IP 데이터그램의 총 길이(헤더+ 데이터)를 바이트 단위로 정의
- Identification, Flags, Fragmentation offset
- 단편화에 사용
- 수명(TTL; Time to Alive)
- 최대 홉(라우터)의 수를 제어
- 발신지 호스트가 데이터그램을 송신할 때, 숫자 하나(두 호스트 간의 최대 경로 수의 약 2배)를 저장
- 각 라우터는 이 값을 1씩 감소
- 이 값이 0이 될 때까지 라우팅을 수행, 0이 되면, 라우터는 데이터그램을 폐기
- IP_TTL, IP_MULTICAST_TTL 소켓 옵션으로 변경할 수 있다.
- 프로토콜(protocol)
- IP층의 서비스를 사용하는 상위 계층 프로토콜(TCP, UDP, ICMP, IGMP) 정의
- IP 데이터그램이 전달되어야 하는 최종 목적지의 프로토콜 기술
- 발신지 주소(source address)
- 발신지 IP 주소를 정의
- 목적지 주소(destination address)
- 목적지 IP 주소를 정의
- 옵션(option)
- 시험이나 오류 제거를 위해 사용
라우팅(Routing)
라우팅 기술
- 라우팅 테이블(routing table)을 소유하기 위한 호스트 또는 라우터가 필요
- 라우팅 테이블을 통한 최종 목적지에 대한 경로 탐색
IP와 함께 사용되는 프로토콜
ARP, ICMP, IGMP의 관계
- IP는 다음 홉의 MAC 주소를 알아내기 위해 ARP 프로토콜 사용
- IP는 메시지를 제어하고 오류 제어를 위해 ICMP 프로토콜 사용
- IP는 멀티캐스팅을 위해 IGMP 사용
ICMP 개요
인터넷 프로토콜의 취약점
- IP는 오류 보고와 오류 정정 메커니즘이 없음
- IP는 호스트와 관리 질의를 위한 메커니즘이 부족
ICMP(Internet Control Message Protocol)
- 인터넷 제어 메시지 프로토콜
- IP의 약점을 보완
- IP 데이터그램으로 캡슐화
IGMP
IGMP (Internet Group Management Protocol)
- 동시에 많은 수의 수신자에게 보낼 필요가 있을 때 멀티캐스팅의 통신유형을 가져야 하는데 IGMP가 그룹관리를 통해 관리하게 한다.
- 예를 들면 주식 가격의 변동에 대해 동시에 정보를 전달 받거나 여행사들이 최소된 여행에 대해 정보를 받을 수 있고, VoD등에도 응용 될 수 있다.
그룹 관리
- IGMP는 그룹관리 프로토콜이다. 이것은 멀티캐스트 라우터가 인터페이스에 관련된 멤버의 리스트를 생성하고 갱신하는 것을 돕는다.
IPv6 - 개요
IPv4의 문제점
- IPv4 주소 공간의 한계
- IPv4는 최소 지연과 자원의 예약 불가
- IPv4에서는 보안 메커니즘(암호화와 인증)을 제공하지 않음
IPv6 장점
- 확장된 주소 공간
- 개선된 헤더 형식
- 새로운 옵션
- 확장 허용
- 자원 할당에 대한 지원
- 향상된 보안성 제공
프로세스간 전달
소켓 주소
- IP 주소와 포트 번호의 조합
- 전송층 프로토콜은 한 쌍의 클라이언트 소켓 주소와 서버 소켓 주소의 소켓 주소들을 필요
포트 (Ports)
- TCP나 UDP를 사용할 때의 상호간의 이동통로
- 상 하위 프로토콜은 같은 포트번호를 사용한다
- 클라이언트는 서버와 접속할 때 포트번호를 할당 받아 사용
- 웹 서버는 보통 80번 포트, 클라이언트는 임시 포트를 할당 받아서 사용
- 한 컴퓨터에서 여러 서비스를 동시에 사용할 수 있는 것은 포트 번호가 있기 때문 0~65534
포트 번호의 종류
- well-known (reserved) port : 0~1023
- IANA 가 잘 알려진 인터넷 서비스(예, ftp(21), smtp, http(80))에게 할당한 port 번호
- 유닉스 /etc/services 파일에 기술되어 있음
- registered port : 1024~49151
- ephemeral(dynamic) port : 49152~65534
- server
- bind()를 통해 자신의 port 번호를 명시함
- port 번호를 “0”으로 지정한 경우 시스템에서 임의의 포트 번호를 할당
- client
- 자신의 port 번호를 알고 있을 필요가 없으며, connect() 시에 임의의 포트번호를 할당 받는다.
서비스 기본 포트 번호
기본 서비스들
- Echo service : 단순히 클라이언트의 문자를 반복으로 보내주는 서비스
- Daytime service : 서버의 날짜와 시간을 알려주는 서비스
- Telnet : 23번을 기본포트로 원격로그인 한다.
- FTP : 21번을 기본 포트로 로그인 한다
- HTTP : 웹 브라우저는 80번 포트를 기본으로 사용하고 있다.
소스 포트와 목적지 포트
- 1) 서버의 IP주소 211.241.54.111 로 접근
- 2) 목적지포트 80으로 서비스 요청
- 3) 요청한 클라이언트3001 포트로 응답
다중화 및 역 다중화
- 다중화: 다수의 프로세스와 하나의 전송 층 프로토콜(UDP 또는 TCP)
- 역 다중화
- 수신 측에서의 일 대 다의 관계
- 오류 검사와 헤더를 제거 후 포트 번호에 근거하여 적절한 프로세스에 전달
신뢰성 대 비 신뢰성
- 신뢰성(TCP)
- 전송 층에서는 흐름 제어와 오류 제어를 구현하여 신뢰성 있는 전송층 프로토콜을 사용
- 느리고 복잡한 서비스 제공
- 비 신뢰성(UDP)
- 응용 프로그램이 자신의 흐름 제어와 오류 제어 기법을 가진 경우
- 빠른 서비스가 필요하거나 서비스 특성상 흐름 제어 및 오류 제어가 불필요할 경우(실시간 응용) 사용
TCP의 특징
- 연결 위주 전송 방식 (Connection-Oriented)
- 전송 데이터의 신뢰성과 무결성을 보장하기 위한 것
- 신뢰성 있는 전송
- TCP 연결경로를 통하여 데이터를 전송하고 이에 대한 응답(ack)을 받음으로 써 그 데이터가 올바르게 전송되었음을 보장
- 데이터 흐름제어나 순서제어를 하기 때문에 전송속도가 느리다.
- 양방향 연결 (가상회선 연결방식)
- 통신 버퍼 이용 전달 및 특별한 구조가 없는 바이트 스트림 형태로 수송
3-way handshake
TCP의 연결 확정 과정
- 1) 클라이언트가 서버로 SYN(Synchronize)신호 보냄
- 2) 서버가 응답으로 SYN, ACK 신호를 보낸다.
- 3) SYN, ACK를 정상 수신하면 응답으로 다시 ACK를 보낸다
3-way handshake 연결 재설정
연결 재설정
- 현재 연결이 훼손된 경우 요청
- 훼손 원인
- 한쪽 TCP가 존재하지 않는 포트에 대해 연결 요청을 받은 경우
- 한쪽 TCP가 비정상적인 상황으로 인해 연결 중지를 원할 경우
- 한쪽 TCP가 다른 쪽 TCP가 오랫동안 유휴 상태인 것을 발견한 경우 연결을 없애기 위해 RST 세그먼트 전송
흐름 제어(flow control)
흐름 제어(flow control)
- 목적지로부터 확인 응답을 받기 전에 발신지가 송신할 수 있는 데이터의 양을 정의
- TCP는 응용 프로그램으로부터 전달된 데이터 버퍼에 부여돼 송신할 준비가 되어 있는 윈도우를 정의
- TCP는 슬라이딩 윈도우 프로토콜에 정의된 최대한 많은 양의 데이터를 송신
슬라이딩 윈도우 (sliding window protocol)
- 슬라이딩 윈도우는 목적지가 데이터로 넘쳐나지 않도록 하기 위하여 데이터의 흐름을 제 어할 뿐만 아니라 전송을 좀 더 효과적으로 만들기 위하여 사용된다. TCP의 슬라이딩 윈 도우는 바이트 단위로 제어된다.
슬라이딩 윈도우 프로토콜
- 윈도우크기는 수신 윈도우(receiver window: rwnd)와 혼잡 윈도우(congestion window: cwnd)중에서 작은 값으로 정해진다.
- 윈도우는 수신측에 의해서 열릴 수 있으며 또한 닫힐 수 있지만, 축소될 수는 없다.
- 목적지는 윈도우 축소가 일어나지 않는 한 언제든지 확인응답을 전송할 수 있다.
- 송신측의 슬라이딩 윈도우는 데이터프레임이 보내지면 왼쪽으로부터 줄어든다.
- 송신측의 슬라이딩 윈도우는 확인응답 ACK을 받으면 오른쪽으로 확장한다.
UDP(User Datagram Protocol)
- UDP는 datagram 기반의 전송 프로토콜
- UDP는 비 연결형 데이터 전송
- UDP는 비신뢰성 프로토콜
- (Packet이 목적 호스트에 꼭 도달한다는 보장은 없다)
- 최대 UDP datagram 크기 이론적인 IP datagram의 최대 크기는 65535byte이다.
UDP에서 사용하는 응용 프로토콜들
- DNS 질의 시
- DNS의 질의는 빠른 응답요구를 요하기 때문
- TFTP (Trivial File Transfer Protocol)
- 덜 신뢰하는 파일전송
- NFS (Network File System)
- RIP (Routing Information Protocol)
- 반복적인 라우팅 테이블의 갱신을 위해
UDP의 장, 단점
장 점
- 연결설정 과정이 필요 없으므로 오버헤드를 줄인다.
- 오류발생을 허용하는 신속한 전송을 처리하기에 적합하다.
- 멀티캐스팅과 브로드캐스팅을 위한 전송 프로토콜로 적절하다.
- RIP와 같은 경로 갱신 프로토콜에서 사용된다.
단 점
- 데이터 그램의 상실
- 데이터 그램의 순서 뒤바뀜
- 중복
UDP의 사용 용도
UDP의 사용 용도
- 흐름 및 오류 제어를 하지 않는 간단한 요청-응답 통신을 요구하는 프로세서
- 내부 흐름 및 오류 제어 기법을 가진 프로세스
- 멀티캐스팅을 위한 적당한 전송 프로토콜
- 라우팅 정보 프로토콜과 같은 경로 갱신 프로토콜을 위하여 사용
- 실시간 전송 프로토콜(RTP)과 함께 사용
Socket 인터페이스
- 1982년 BSD(berkeley Software Distribution) UNIX 4.1c에서 처음 제공 되었으며, 이후 소개된 대부분의 운영체제에서도 기본적으로 제공 되고 있다.
- OS 프로그램 개발을 위한 표준을 IEEE의 POSIX와 Open Group를 중심으로 이루어 지고 있으며 사실상 표준으로 사용
- 용용프로그램과 TCP/IP계층을 연결하기 위한 인터페이스를 소켓인터페이스(Socket Interface)라고 부른다.
응용 계층
- 사용자가 네트워크에 접근할 수 있도록 해 줌
- 사용자 인터페이스 제공
- 서비스지원
- 전자메일,원격파일 접속 및 전송, WWW
FTP
RFC 959에 명시, TCP를 사용하여 파일을 전송하게 된다
FTP는 두 개의 연결을 사용한다.
- port 21: 제어 연결
- port 20: 데이터 연결
Telnet
- 원격 로그인은 가장 일반적인 응용프로그램 중 하나이다.
- Telnet은 서로 다른 운영체제하에서도 작동할 수 있다.
- Telnet은 네트워크 가상터미널(NVT)라 불리는 최소한의 공통 요소로 터미널을 정의한다
이메일
- 이메일 프로그램의 TCP의 연결 1/2이 SMTP에 대한 것임을 보면 상당히 빈번하게 사용되는 프로그램이다.
- 평균 우편 메시지의 데이터는 1500byte 정도지만, 일부 메시지는 수백만 바이트의 데이터를 갖는데 이것은 이메일이 파일 전송에도 사용되기 때문이다.
정리
물리 계층 - 디바이스 드라이버의 역할
- 하드웨어(MAC) 주소, 시그널 처리
네트워크 계층 - IP, 단편화, ARP, ICMP 등
- IPv4와 IPv6의 주소량
전송계층 - TCP, UDP, 윈도우, 흐름제어
응용계층 - 다양한 응용 프로토코
'배운 내용 > 한 번에 끝내는 컴퓨터 공학 전공필수' 카테고리의 다른 글
컴퓨터 구조 (0) | 2023.10.19 |
---|---|
컴퓨터 네크워크 PART 3. 네트워크 응용 (0) | 2023.10.19 |
리눅스 환경 구축 - WSL 삭제하고 다시 깔기 (0) | 2023.10.16 |
컴퓨터 네트워크 PART 1. 컴퓨터 네트워크 소개 (2) | 2023.10.16 |
이산수학 (1) | 2023.10.11 |