전송 계층에서 연결형 서비스 제공하는 통신 프로토콜로, 가상 회선 방식 제공.
흐름제어, 혼잡제어, 재전송 등을 제공한다.
전송이 양방향으로 동시에 발생하는 전이중 통신 방식이다.
2개의 종단점으로 구성된 점대점 방식이다.

구조 정도는 외워두자. 라떼는 교수님이 종이에 이거 그리는 걸 시험 문제로 냈다.
데이터 처리 속도(양)을 조절하여 버퍼 오버플로우를 방지한다.
Window Size를 이용하여 데이터 수신량을 교섭.
네트워크 내의 패킷 수가 넘쳐나 혼잡해지는 것을 방지한다.
수신 측에서 받지 못하면 재전송하여 신뢰성은 높인다.
Triple-Duplicate-ACK-based-retransmission : 송신 측에서 여러 개의 세그먼트를 전송했는데, 순서가 틀렸을 경우, 다시 보내달라는 의미의 ACK를 보냄. 송신 측에서 동일한 ACK를 3개 이상 받았을 경우, 해당 패킷은 손실되었다고 판단하여 재전송 요청.
Timeout-based retransmission : 일정 시간 동안 수신자로부터 ACK를 받지 못하면 손실되었다고 판단하여 재전송 요청.
전송 계층에서 비연결형 서비스 제공하는 통신 프로토콜로, 데이터그램 형식.
비연결형이라서 신뢰성이 없지만, 빠른 속도로 전송이 가능하다.
출발지 Port, 목적지 Port, 데이터 길이, 체크썸 끝~
전송 계층에서의 데이터 전송을 담당하는 프로토콜이다.
Port 번호를 이용해 주소를 지정하며, 데이터 오류 검사를 위해 체크섬을 포함한다.
TCP는 Handshake를 통해 연결을 성립시킨 후 통신한다.
반면 UDP는 연결 없이 통신하는 비연결형이다.
TCP는 Byte Stream(Segment) 형태로 전송하여 데이터의 경계를 구분하지 않음.
반면 UDP는 데이터그램 형식으로 데이터의 경계를 구분한다.
TCP는 재전송이 존재하여 신뢰성 있는 데이터 전송이 가능하다.
반면 UDP는 재전송이 없어 신뢰성이 없다.
TCP는 연결할 때 3-way handshake가 이루어져 시간 지연이 발생한다.
텍스트, 파일 등은 신뢰성이 필요하지만 사진, 영상 등은 데이터 일부가 누락되어도 문제가 발생하지 않기 때문에 단순하게 전송 속도가 빠른 UDP를 사용해도 좋다.
TCP : 대부분의 웹사이트 연결, 이메일, 파일 전송 등
UDP : 영상, 온라인 게임, DNS 등
TCP는 안전하다며?
꼭 그렇지는 않음.
TCP가 제공하는 연결 지향, 순서 보장, 재전송 등의 특성이 공격에 이용 되기도 한다.
SYN Flooding
: SYN을 대량으로 전송하는 방식의 공격.
Server는 Handshake 연결 과정의 SYN을 받는 순간 TCP Connection 연결 정보를 메모리에 생성. 그러나 ACK이 오지 않으면 Half Open Connection 상태가 되어 SYN을 받는대로 Connection을 계속 생성하다가 SYN Queue가 가득 찬다. 정상 사용자가 SYN을 보내도 접속하지 못하는 상태가 된다.
미라이 봇넷 등 여러 사레에서 DDoS 공격의 일종으로 사용 됨. 유사한 ACK Flooding 등도 있다.
TCP Sequence Number Prediction
: TCP는 시퀀스 넘버로 패킷 순서를 관리. 공격자가 다음 번호를 예측하여 가짜 패킷을 위조해 전송할 수 있다. 시퀀스 넘버를 알맞게 예측하여 전송에 성공할 시, 서버는 공격자를 정상 사용자로 오인하게 만들 수 있다. 이는 악의적인 데이터 주입, 기존 연결 종료 및 TCP 세션 하이재킹으로 이어질 수 있다.
현재는 랜덤성이 강해져서 괜찮긴 한데...
UDP는 그냥 존재만으로도 위험하다.
(연결 상태가 없어 발생 불가능한 SYN/ACK Flood 및 세션 하이재킹 제외 모든 취약점 존재)
UDP Reflection Attack
: UDP는 기본적으로 연결을 하지 않으며, 응답할때 데이터그램을 보낸 IP주소로 되돌려 보낸다. 이때 데이터그램을 보낸 최초 송신자가 악의적으로 출발지 IP를 위조하여 전송할 시, server는 위조된 IP로 응답을 보낸다. 위조된 출발지 IP를 담은 데이터그램을 여러 server에 보내면 피해자(위조된 IP 보유자) 쪽으로 UDP 응답이 대량으로 되돌아와 리소스를 소모시킬 수 있다.
이외에도 이러한 'IP Spoofing + 반사 기법'을 다양한 프로토콜로 활용한 DNS Reflection, NTP Reflection 등이 있다.