전송계층의 통신단위는
tcp를 이용할 때는 세그먼트
udp를 이용할 때는 데이터그램
1.TCP의 특징 : 신뢰성 을 바탕으로 통신
①.연결형 서비스, 연결지향형 프로토콜
송신자 수신자가 통신을 할 때 보내고 잘 받았다라는 의미로 확인응답받고 이런식으로 오고가는 과정
①-1. tcp 세션 연결방식 : 3way handshaking
<추가로 마지막에 송신자가 수신자에게 ack를 보내는 과정에서부터 바로 데이터를 보낼 수 있다.>
①-2. tcp 세션 연결 종료방식 4way handshaking
<연결이 완벽히 종료되었다는 것은 양쪽 다 종료 되었다는 것
가끔 한쪽만 종료되고 한쪽은 종료되지 않은 상태 이런 상태는 좀비상태라고 한다.
네트워크 상태 조회를 하면간혹 z 라고 써져있는 걸 볼 수 있는데 이것이다.
tcp는 서로 간의 신뢰성 있는 통신을 해야되서 일정시간이 지나면 자동으로 정상적으로 종료되도록 하는 특징>
② 흐름제어와 혼잡제어
흐름 제어 : 송신측이 데이터 처리 속도가 더 빠를 경우 데이터 손실 위험 있음.
송신 측과 수신 측의 데이터 처리 속도 차이로 인해 발생하는 문제를 해결하기 위한 기법
혼잡제어 : 송신측은 라우터에서 처리하지 못한 데이터의 양을 손실 데이터로 간주하고 계속해서 데이터를 전송하여 네트워크를 혼잡하게 함. 이 문제를 해결하기 위한 기법.
③. 오류 없이 데이터를 전송한다. 오류가 생기면 데이터를 재전송한다.(신뢰성 있는전송)
순서번호가 바뀌거나 손실되거나 누락되면 tcp는 일정시간을 기다렸다가 다시 재전송을 한다라는 특징이 있음.
TCP는 RTO(Retransmission Time Out)라는 시간을 기다렸다가 재전송 수행
④. 전이중,점대점 방식
-송신자와 수신자간의 일어나는 모든 과정을 확인하면서 서로 진행해야되니 그런 부분을 보면서
데이터 전송이 양방향으로 동시에 일어나는 통신=전이중방식
-1대1간의 연결만을 관장하고 관리하기 떄문에
그 외 1:n 이나 n:n 같은 멀티캐스팅이나 브로드캐스팅 방식은 지원하지 않는다.
2.TCP의 헤더구조
-출발지/목적지 포트번호
-시퀀스넘버 : 순서번호 필드 : 보내고자 하는 패킷들의 순서번호를 할당해서 올바르게 전송할 수 있도록 관장
(흐름제어와 혼잡제어 역할 담당)
처음에 순서번호 할당할 때 랜덤한 값으로 부여를 해서 순서번호를 겹치지 않게끔 구분하는 특징을 가지고 있다.
(공격에 취약한 부분 을 보완을 하고자 구분하는 특징도 있음)
-확인응답번호 : 제대로 수신했는지 확인응답하기 위해서 사용되어지는 필드
-데이터오프셋 : 데이터가 시작하는 위치가 어디인지 보여주는 필드
-예약된 필드 : 미래를 위해 사용되지 않는 예약된 공간
-컨트롤비트(제어비트): 6개의 플래그비트 (urg rst syn ack fin psh) -> 패킷의 flag 값에 따라 기능이 달라진다.
종류
|
내용
|
URG
|
비활성화 되어있다가 긴급시에 사용되어 Urgent Pointer라는 필드와 동시에 사용됨
|
ACK
|
모든 플래그에 확인응답을 나타내는 플래그
|
PSH
|
중간과정을 거치지 않고 바로 osi 7계층의 상위계층으로 데이터 전달하는 것을 담당
|
RST
(reset) |
비정상적으로 세션을 끊거나 즉시 연결을 끊고자 할 때 사용되어지는 플래그
(사용자의 동의를 구하지 않고 강제)
*공격자가 해킹을 시도할 때 자주 사용되어지는 플래그비트임.
주기적으로 일어난다면 공격에 대한 징후도 의심할 수 있어야함.
|
SYN
|
연결을 동기화한다는 특징 (서로 연결을 하기 위해서 연결을 성립(동기화)시키는 과정)
|
FIN
|
서로간에 연결이 되어서 통신을 하다 연결에 대한 종료가 필요할 때 사용되어지는 플래그 비트
|
-윈도우사이즈: 데이터의 크기를 지정한다.
-체크섬: 보내고자, 받고자하는 데이터에 오류가 있는지를 검출할 때 사용을 하는것
( tcp는 모든 통신에 있어서 오류를 검출하도록 의무적으로(무조건) 사용됨)
-긴급 위치(Urgent Pointer): 평소에는 비활성화 되어있지만 6개의 플래그비트 중 urg가 0에서 1로 활성화가 되면
그 때 가서 동시에 같이 사용되어지는 필드다.
3.UDP의 특징 : TCP와 반대개념
ⓙ.비연결형 서비스
송신 수신을 관장하는 것이 아님. 데이터에 대한 확인응답 안거쳐도 됨.
②.비신뢰적
udp의 통신방식은 3way handshaking이 아닌 서로 보내기만 하면 끝나는 방식
보낸 데이터가 올바르게 갔건 손실이 됐건 순서가 바뀌었건 이런 것들을 보장하지 않음
③.속도가 더 빠르다.
단방향 통신이고 tcp보다 구동해야 하는 동작들이 없기 때문에 속도가 더 빠르다.
=>udp best effort 방식을 쓰기 때문 :
분실 또는 손상에 구애 받지 않고 최선을 다해 목적지에 전송하면 되는 안정성 보다는 시간을 강조한 방식
4.UDP의 헤더구조
-송신/수신 포트번호
-총 길이
-체크섬
tcp에서 체크섬은 모든 헤더와 데이터에 대해서 무조건 오류검출하지만
udp에서의 체크섬은 선택적으로 원할 때만 체크섬 기능을 수행
5. 기타
tcp는 순서번호 필드를 통해 순서보장
/세그먼트를 이용한 가상 회선 방식
/일반적인(대부분의) 서비스(웹서핑 메일전송 파일전송 등) : 올바르게 데이터가 다 도착하고 보여지기 때문에
udp는 순서보장 안하고
/ 독립적인 데이터그램 방식 이용
/ 중간에 누락,손실이 되더라도 아무런 타격이 없는 서비스는 udp를 이용 (화상회의,스트리밍,인터넷전화등)
-tcp 흐름제어 기법 :
스탑-웨이트 (전송한 패킷에 대해 응답(ack) 받은 후 다음 패킷 전송)
=> (보완) 슬라이딩 윈도우 기법 (수신 측에서 설정한 윈도우 크기만큼 패킷을 전송하도록 함)
그림출처
https://www.javatpoint.com/tcp
https://www.javatpoint.com/udp-protocol
'Security > 보안관제' 카테고리의 다른 글
악성코드 (0) | 2022.12.15 |
---|---|
보안장비 (DDoS,FW,IPS,WAF) (0) | 2022.12.15 |
OSI 7계층별 장비 (0) | 2022.12.15 |
OSI 7계층 (0) | 2022.12.15 |
네트워크 보안공격(자율주제) (0) | 2022.12.15 |