[CS] 네트워크 프로그래밍 중간 정리
Logical communication
실제 전송이 아니라 메세지를 주고받는 과정에서 오류체크, 흐름제어 등을 한다는 것
전송계층 과 네트워크 계층
-
전송 계층 (Transport Layer) Transport layer는 서로 다른 Host에서 동작하는 Application Process사이의 Logical Communication을 제공한다.
-
네트워크 계층 (Network Layer) 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다.
OSI, TCP 모델 차이
OSI 7 Layer는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면에 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.
두 계층을 비교할 때 , 세션(Session)과 표현(presentation) 2개의 계층이 TCP/IP프로토콜 그룹에 없다는 것을 알 수 있다.
segment, pdu 용어 개념
-
PDU (Protocol Data Unit - 프로토콜 데이터 단위)
데이터 통신에서 상위 계층이 전달한 데이터에 붙이는 제어정보를 뜻한다.
-
세그먼트 전송 계층에서는 PDU를 Segment라 부른다.
TCP vs UDP
-
TCP
신뢰적, 연결지향형 서비스 -
UDP
비신뢰적, 비연결형 서비스
멀티플렉싱 , 디멀티 플렉싱
-
멀티플렉싱이란? (Multiplexing)
하나의 통신 채널로 여러개의 데이터를 동시에 보내는 것이다. 여러 애플리케이션들이 전송계층으로 메세지를 전달하면 전송계층에서는 헤더를 붙여서 캡슐화하고 네트워크 계층으로 일렬로 내려보낸다. -
디멀티플렉싱이란? (Demultiplexing)
수신 측 전송 계층에서 네트워크 계층으로 일렬로 올라온 데이터들을 헤더정보를 보고 알맞은 각 애플리케이션 소켓으로 전달하는 것이다.
error detection, receiver feedback, re-transmission
- Error Detection
Error가 발생한 경우 수신자가 Error를 감지 해야한다.- UDP의 경우 Error Detection을 위해 Checksum Field가 존재한다.
수신자가 Bit Error를 검출하고 복구할 수 있도록 해준다.
Error 검출을 위한 추가적인 Bit가 필요하다. -
Receiver Feedback
일반적으로 송신자와 수신자는 수천 km 떨어진 서로 다른 End System에서 동작한다.
송신자가 Packet이 정확히 수신했는지 알기 위해, 수신자가 송신자에게 Feedback을 제공해야한다. (ACK, NAK) - Re-transmission
오류가 있는 Packet은 송신자에 의해 재전송된다.
Java I/O
-
Stream
Stream은 Byte단위로 Data를 전송하며 입출력 대상에 따라 각기 다른 Stream을 사용한다.
ex)
File - FileInputStream, FileOutputStream
Memory - ByteArrayInputStream, ByteArrayOutputStream
Process - PipedInputStream, PipedOutputStream각각의 Stream은 InputStream이나 OutputStream을 상속받아야 한다.
-
Filter Stream
실제로 Data를 주고받는 Stream이 아니므로 다른 Stream을 필요로한다.
Stream의 기능을 향상시키거나 새로운 기능을 추가할 때 사용
대표적으로 Buffer 기능을 수행하는 BufferedInputStream이 있다. -
Reader & Writer
C언어와 달리 Java에서는 한 문자를 의미하는 char형이 2byte이기 때문에 byte 기반의 Stream으로 처리하는데 문제가 존재한다.
Java에서 문자 기반의 Stream인 Reader와 Writer를 제공한다.
패킷 손상 어떻게 할거냐.
재전송을 기반으로 신뢰성 있는 Data 전송을 가능케하는 ARQ Protocol을 사용한다.
Tcp connection 에 대해
3-Way Handshake를 통해 Application Process와 다른 Process를 연결해야한다. 과정은 다음과 같다.
- Client가 특별한 TCP Segment를 서버로 전송
- Server는 특별한 TCP Segment로 응답
- Client가 다시 특별한 TCP Segment로 응답
Little Endian & Big Endian
빅 엔디언 : 큰 단위가 앞에 나옴
리틀 엔디언 : 작은 단위가 앞에 나옴
네트워크 바이트 순서는 Big Endian 방식만을 사용함
따라서 Little Endian을 사용하는 경우 Big Endian방식으로 데이터를 변경해서 전송해야하며 수신한 데이터에 대해 역순으로 조합해야 한다.
Go-Back-N, SR
GBN(Go-Back-N)은 잘못된 패킷부터 N개의 크기만큼 재전송하는 방식.
N개의 패킷 중 일부만 손실되어도 N개의 패킷을 전부 재전송한다는 단점이 있음.
이를 해결하기 위해 분실된 패킷들만 재전송하는 SR(Selective Repeat) 방식을 사용한다.
Datagram Format
Datagram : TCP/IP Protocol에서 Network Layer의 Packet을 Datagram이라 함.
Version
4bit, Datagram의 IP Protocol Version(IPv4, IPv6)을 명시
Router는 Version을 확인하여 Datagram을 어떻게 해설할지 결정
Header Length
IPv4 Datagram은 Header에 가변 길이의 Option을 포함하기 때문에 header의 길이를 표시해야한다.
Type Of Service(TOS)
서로 다른 유형의 IP Datagram을 구별
ex)
실시간, 비실시간 Datagram의 Traffic 구별
Datagram Length
Byte로 계산한 IP Datagram의 전체 길이
Identification, Flags, Fragment offset
IP Datagram Fragment와 관련있는 Field, 같은 Datagram에 속하는 지를 구분하는 번호
Time-To-Live(TTL)
Network에서 Datagram이 무한히 순환하지 않도록 하는 역할
Router가 Datagram을 처리할 때마다 감소하며 0이 되면 폐기된다.
Upper-layer Protocol
IP Datagram에서 Data가 전달될 목적지의 Transport Layer의 Protocol을 명시한다.
ex) UDP : 17, TCP : 6
Header Checksum
Router가 수신한 IP Datagram의 bit 에러를 탐지하는데 도움을 준다.
Source & Destination IP address
출발지가 Datagram을 생성할 때
- 자신의 IP 주소를 Source IP Address Field에 삽입한다.
- 목적지의 IP 주소를 Destination IP Address Field에 삽입한다.
Option
Option Field를 사용하면 IP 헤더를 확장할 수 있으나 Overhead를 줄이기 위해 거의 사용하지 않는다.
Data
대부분의 경우 IP Datagram의 Data Field는 목적지에 전달하기 위해 Transport Layer의 Segment를 포함한다.
IP Datagram의 Data Field에 ICMP와 같은 다른 유형의 데이터를 담기도 한다.
체크섬 계산
9.28 PPT 30 ~
IP (인터넷 프로토콜)
송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보의 규약
IP Datagram Fragmentation & MTU
모든 Link Layer Protocol이 같은 크기의 Network Layer Packet을 전달할 수는 없다.
Link Layer Frame이 전달할 수 있는 최대 데이터 양을 MTU(Maximum Transmission Unit)라고 부름
항상 같은 Link Layer Protocol이 사용되지 않기 때문에 각각의 Protocol Layer가 서로 다른 MTU를 가질 수 있음
만약 IP Datagram이 너무 큰 경우 두 개 이상으로 분리한 후 별도의 Link Layer Frame으로 캡슐화하여 보낸다. 이러한 각각의 Datagram을 Fragment라고 한다.
목적지 Host가 Fragment를 결합할 수 있도록 Header에 Identification, Flags, Fragment offset Field들을 추가하였다.
서브넷 과 서브넷 마스크
서브넷 : IP 주소에서 네트워크 영역을 부분적으로 나눈 부분망, 부분 네트워크
서브넷 마스크 : 서브넷 마스크는 IP 주소 체계의 Network ID와 Host ID를 분리하는 역할
라우터 하는게 뭔지, in, out f,ebric
10.5 ppt 21 참고
switching via memory, switching via bus, switching via an interconnection network 특징
10.5 ppt 24 참고
Leave a comment