Networking 방식
•
circuit switching : 중앙에서 데이터 전송 경로를 결정
•
packet switching : 데이터 전송 경로가 그때그때 다르다.
TCP/IP 5계층
•
Application layer : 프로토콜에 따라 User가 실제로 받는 데이터의 형식을 결정
•
Transport layer : process to process 전달방식
•
Network layer : source to destination 전달방식
•
Datalink layer : hop to hop 전달방식
•
Physical layer
Stream Delivery vs Boundary Delivery
•
Stream Delivery는 들어오는대로 순서나 같은 프로세스인지를 확인하지 않고 데이터를 전송한다. TCP 프로토콜이 이 전송방식을 사용
•
Boundary Delivery는 하나의 프로세스 전체 데이터가 들어오면 그 데이터를 전송한다. UDP 프로토콜이 이 전송방식을 사용
Selective 방식 vs Cumulative 방식
•
Selective 방식은 전송한 패킷에 대한 응답 패킷에 받은 시퀀스 넘버를 포함한다.
•
Cumulative 방식은 전송한 패킷에 대한 응답 패킷에 받고 싶은 시퀀스 넘버를 포함.(TCP가 사용하는 방식)
3-way handshake
•
SYN, SYN+ACK, ACK으로 구성
•
클라이언트가 마지막에 ACK을 전송할 때는 Sequence Number가 의미가 없다. ACK Number가 중요
Fin(close)
•
client가 server의 Fin에 대한 Ack을 보내고 바로 죽으면 server가 ack을 받지 못하였을 때 정상종료가 이루어지지 않는다. 따라서 Time-out 시간만큼 살아있는다.
window
•
Flow control : 소비하는 속도와 전송하는 속도의 균형을 맞추기 위한 시스템. 수신자가 전송자에게 자신의 남은 공간을 알려준다.
•
Silly window syndrome : 작은 데이터를 보내는데 큰 헤더 사이즈가 필요한 경우.
•
Nagle 알고리즘(송신 측 문제 해결) : 처음 data는 작은 data라도 그냥 전송하고 이후에는 버퍼가 찰 때까지 혹은 RTT(Round Trip Time)만큼 기다리고 보낸다. 빨리 보내야 하는 데이터에 대해서는 option으로 관리해 주어야 한다.
•
Clark 해결(수신 측 문제 해결) : 어플리케이션이 버퍼의 데이터를 늦게 read할 때 생기는 문제. 이때 송신자에게 자신의 window size를 0으로 알리고 버퍼에 여유가 있을 때 정상적인 size를 알려준다.
Ack의 숫자를 줄이는 방법
•
data를 받고 ack을 보낼 때 보낼 data가 있으면 함께 보낸다.
•
Ack을 보내기전에 500ms만큼 기다렸다가 보낼 데이터가 있는지 확인한다.
•
두 개의 데이터를 받았을 때 하나의 Ack만 보낸다.
응급상황 시 Ack 전송
•
패킷 손실을 detect하면 무조건 ack을 전송한다.
•
내가 잃어버린 패킷을 수신하면 바로 Ack 전송한다.
•
받은 패킷을 또 다시 받는 경우에 바로 Ack을 보낸다.
Fast retransmission
•
3번의 같은 ack을 받으면 손실로 간주하고 Time-out까지 가기전에 재전송을 한다. 또한 재전송을 요청받은 패킷만 전송하는 selective 방식을 option으로 설정할 수 있다.
Classful addressing
•
class A : 8/24, class B : 16/16, class C : 24/8
•
subnet : data 전송을 위해서는 local network에서 broadcasting을 통해 MAC 주소를 알아야하는데 LAN을 subnet으로 나누면 효율성이 높아진다.
Classless addressing
•
prefix와 suffix가 유동적
NAT
•
한 LAN에서 사용하는 사설망, 외부와 내부를 포트번호로 호환
IP Protocol
•
Time to live : loop path를 방지하기 위해 hop counter를 둔다.
•
header길이는 최소 20바이트
•
데이터 전송 과정 :
1.
Transport layer에서 데이터를 가져와 checksum계산과 헤드 붙이는 과정 수행
2.
라우터당 hop counter를 줄이며 routing table을 보고 다음 hop 결정
3.
필요하다면 Fragmentation과정 후 Datalink layer로 전송
4.
목적지까지 왔으면 Reassembly 모듈로 보냄
5.
Offset과 M bit가 0이면 바로 버퍼에 전송
6.
아니라면 reassembly table에 추가 혹은 entry 생성
7.
마지막 fragmentation인 경우 재조합 후 버퍼로 전송(fragmentation 패킷이 늦게 오면 time-out이 발생하여 모든 패킷 버린다. 재전송은 TCP가 알아서 처리한다.)
Fragmentation
•
네트워크마다 MTU가 다르다.
•
IP header의 flag field를 통해 마지막 패킷인지 뒤에 더 쪼개져 있는 패킷이 있는지 파악할 수 있다.
•
같은 Identification이면 같은 패킷이라는 의미
ICMP는 Network layer에서 검출할 수 있는 에러를 검출하는 프로토콜이다.
•
물리적 링크가 깨짐
•
목적지의 TCP가 닫힌경우
•
Do not fragmentation인데 MTU가 작아서 전송이 불가
ARP Protocol
•
목적지의 MAC 주소를 모르는 경우 broadcast(목적지 MAC주소 FFFF)를 통해 request
•
해당 IP주소를 가진 기기는 unicast로 패킷의 전송정보를 보고 전송
•
스푸핑발생 가능성이 있다.
Modem과 Codec
•
Modem : 디지털 데이터 -> 아날로그신호
•
모뎀은 디지털 데이터의 진폭(ASK), 주파수(FSK), 위상(PSK), QAM(진폭+위상)에 따라 다른 bps를 가진다.
•
Codec : 아날로그 데이터 -> 디지털 신호
•
방식으로 PCM이 있다. PCM은 표준화, 양자화, 부호화, 복호화, 여파화순서로 진행
ARQ
•
오류 검출 후 재전송, 자동 반복요청
•
stop&wait 방식 : Ack이나 Nak을 기다린다. BASIC 전송 절차에서 사용
•
go-back-n ARQ : NAK이 오지 않으면 계속 데이터를 전송, 오류가 발생하면 그 프레임부터 모두 재전송. HDLC, SDLC 전송 절차에서 사용
•
Selective-repeat ARQ : Go back방식의 중복 전송을 보완, HDLC 전송 절차에서 사용
해밍코드
•
수신측에서 오류가 발생한 비트를 찾아 직접 오류를 수정하는 방식
•
1비트 수정만 가능
•
해빙거리 : 일치하지 않는 비트의 개수
다중화기
•
하나의 통신회선에 여러 대의 단말기가 동시에 접속하여 사용할 수 있도록 하는 장치
•
FDM(주파수 분할) : 유효 대역폭이 클 때 사용,
•
TDM(시간 분할) : 유효 전송률이 클 때 사용
CSMA/CD
•
수신자가 이미 통신을 하고 있으면 임의의 시간동안 대기