IP: Best-Effort Delivery(최선을 다해서 배달을 한다)
UDP: 속도가 빠르기만 하면 됨, IP와 유사
TCP: 데이터가 중요하면
SCTP: 인터넷 통화, 화상회의
전송층 서비스
양단간 표현 3계층
도메인 process to process 4계층
포트 : 4계층의 주소
날짜와 시간을 알려주는 서버 Daytime client
ICANN
0~1023 Well-known port
1024~49,151 Registered
15,152~65,535 Dynamic or private
소켓 주소
OS별로 소켓이 있음 IP주소 Port번호
다중화 역다중화
개체가 둘 이상의 발신지에서 항목(items)을 받을 때, 이를 다중화(다-대-일: many-to-one)라고 한다.
개체가 둘 이상의 목적지에 항목을 전달할 때마다 이것을 역다중화(일-대-다: one-to-many)라고 한다.
오류 제어
비연결형(connectionless)UDP 과 연결형(connection- oriented)TCP
연결형은순서가 바뀐경우 원래는 안온걸 기다리지만 비연결형은 순서 관심없이 그냥 전송함
SMTP 이메일
FTP 파일
TELNET PUTTY,원격 접속,가상 터미널
DNS 도메인 주소를 IP로 아니면 그반대
SNMP 망관리 프로토콜
DHCP 주소 공유기
HTTP 웹 서비스
UDP 빨리 보내는거에 관심, 신뢰성 없는 비연결형 전송층 프로토콜 (DNS, DHCP)
TCP 데이터 양 많음, 신뢰성 있는 연결형 전송층 프로토콜 (FTP,TELNET)
SCTP UDP+TCP 두 장점을 합침 화상회의등에 이용
UDP 서비스
앞에서 전송층 프로토콜에 의해 제공되는 일반적인 서비스를 다루었다.
이 절에서는 UDP에 의해 제공되는 일반적인 서비스에 대해 다룬다.
프로세스-대-프로세스 통신: UDP는 IP 주소와 포트 번호의 조합인 소켓 주소를 사용하여 프로세스 간 통신을 제공한다.
비연결형 서비스: 사용자 데이터그램에는 순서번호가 없다.
흐름 제어: UDP 흐름 제어 기능이 없으므로 윈도우 메커니즘이 없다. 수신자의 큐(queue)는 수신 메시지로 넘칠 수 있다. 흐름 제어 기능이 없다는 것은 UDP를 사용하는 프로세스가 필요한 경우 흐름 서비스를 별도로 제공해야 함을 의미한다.
오류 제어: 검사합(checksum)을 제외하고 UDP에는 오류 제어 메커니즘이 없다. 즉, 보낸 사람은 메시지가 손실되었거나 중복되었는지 알 수 없다. 수신자가 검사합을 통해 오류를 감지하면 사용자 데이터그램은 자동으로 폐기된다. 오류 제어 기능이 없다는 것은 UDP를 사용하는 프로세스가 필요한 경우 이 서비스를 별도로 제공해야 함을 의미한다
UDP 응용
UDP는 흐름 및 오류 제어를 하지 않는 간단한 요청-응답 통신을 요구하는 프로세스에 적당하다.
UDP는 별도의 흐름 및 오류 제어 기법을 가진 프로세스에 적당하다.
UDP는 멀티캐스팅 프로토콜이다.
UDP는 SNMP와 같은 관리 프로세스들을 위하여 사용된다.
UDP는 라우팅 정보 프로토콜(RIP)과 같은 경로 갱신 프로토콜을 위하여 사용된다.
UDP는 보통 수신 메시지의 영역 사이에 변동성이 많은 지연 (uneven delay)을 인내할 수 없는 상호작용적(interactive) 실시간 응용에 사용된다.
유저 데이터 그램
TCP
앞뒤에 전처리 후처리 필요 연결이 된 상태에서데이터 송수신 연결 설정, 데이터 전송, 연결 해제 이 3단계 필요.
세그먼트 = TCP
스트림 서비스
끊김없이 전송됨 전송단위는 세그먼트
버퍼
영화를 볼경우 서버에서 영화에 해당하는 데이터가 세그먼트로 들어오면 버퍼에서 기다렸다가 버퍼가 꽉차면 버퍼가 TCP로 유저한테 전송 버퍼 사이즈가 크면 기다리는 시간이 길어지고 작으면 버퍼가 일할게 많아짐 적당한사이즈 찾는게 중요. 큐로 구현
세그먼트 순서번호
이전 세그먼트의 번호 + 데이터
세그먼트 구조
윈도우 사이즈
흐름제어 receive window(받을수 있는 용량)
윈도우 사이즈를 비교하면서 클라이언트 상황 파악 가능
데이터 < 20바이트 면 헤더가 데이터보다 큰 상황이 발생(20바이트만 갔다면 헤더만 간것)
(silly window syndrome.SWS)
피기배킹(Piggybacking) 한다
보낼때 받을 데이터도 같이 보냄 seq와 ack가 같이 감
DDOS 원리 파악하기
TCP 3-way Handshake 란?
TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake를 사용한다.
TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에
먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다..
Client > Server : TCP SYN
Server > Client : TCP SYN ACK
Client > Server : TCP ACK
여기서 SYN은 'synchronize sequence numbers', 그리고 ACK는'acknowledgment' 의 약자이다.
이러한 절차는 TCP 접속을 성공적으로 성립하기 위하여 반드시 필요하다
세방향 핸드쉐이킹을 사용한 연결 종료 (절교형태)
절바-연결 폐쇄,우아한 종료(Graceful teardown)
하고있던 작업을 적당히 마무리하고 종료하는것
능동적으로 움직이는건 서버 수도적으로 움직이는건 클라이언트
오류제어
정상작동
손실 세그먼트
ARQ
1.stop and wait
보내고 응답받을때 까지 기다림 시간이 오래걸린다는 단점
2.Goback N
오류가 난 지점부터 전송한 지점까지 모두 재전송(대역폭을 많이 차지하는 단점)
3.Selective repeat
오류가 난 지점만 다시 받음 그후에 계속 진행 함
빠른 재전송
같은 응답 메시지가 3번 오면 해당하는 메시지를보내줌
확인 응답 분실
자동적으로 해결됨
응답이 없으면 처음부터 다시보냄
혼잡제어
congestion(일정기간 상승후 유지 해야하는데 추락하는 경우,혼잡) 상황을 방지
혼잡제어 정책 3가지
느린 시작(slow start): 지수 증가(exponential increase)
혼잡 회피(congestion avoidance): 가산 증가(additive increase)
빠른 회복(fast recovery)
느린 시작(slow start): 지수 증가(exponential increase)
처음에 적은값부터 요구하며 천천히 증가(2배씩 증가)
멈추면(ssthresh holder) 그전 값부터 1씩 증가하여 요구
Taho TCP
cwnd(현재윈도우값)
타임아웃을 만나면 한계치를 타임아웃값의 절반으로 초기값을 1로
Reno TCP
3 dupACKs를 만나면 ssthresh는 /2 cwnd는 ssthresh+3
new ACKs를 만나면 cwnd는 ssthresh
aimd
가산증가 지수감소
1씩증가하고 현재값의 절반으로 감소
SCTP
멀티미디어 통신을 위해 좀 더 좋은 프로토콜을 만들기 위해 UDP와 TCP의 일부 장점을 결합하여 설계된 새로운 전송층 프로토콜이다.
다중 스트림 서비스: Association이라 부르며, 스트림 중 1개가 블로킹되더라도 다른 스트림들이 데이터를 전송할 수 있는 서비스를 의미
멀티홈잉
다중IP구성. 메인인 IP가 있고 만약 메인이 닫히면 서브 IP를 이용하여 상시 연결
SCTP특징
Transmission Sequence Number (TSN) 전체 일련번호
Stream Identifier (SI) 미디어 일련번호
Stream Sequence Number (SSN) 미디어 순서번호
SCTP 결합
SCTP에서는 멀티홈잉을 강조하기 위하여 결합(association)이라고 한다
단계가 4단계
네-방향 핸드쉐이킹(Four-way Handshaking)0
세션을 종료하기 위해 수행되는 절차
[STEP 1]
클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 이때 A클라이언트는 FIN-WAIT 상태가 된다.
[STEP 2]
B서버는 FIN플래그를 받고, 일단 확인메시지 ACK 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 B서버의 CLOSE_WAIT상태다.
[STEP 3]
연결을 종료할 준비가 되면, 연결해지를 위한 준비가 되었음을 알리기 위해 클라이언트에게 FIN플래그를 전송한다. 이때 B서버의 상태는 LAST-ACK이다.
[STEP 4]
클라이언트는 해지준비가 되었다는 ACK를 확인했다는 메시지를 보낸다.
A클라이언트의 상태가 FIN-WAIT ->TIME-WAIT 으로 변경된다.
오류제어