일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- webhacking
- Spring
- OS
- SQL
- PWN
- stack overflow
- Operating System
- 정보보안기사 실기
- 운영체제
- hacking
- pwnable
- Lord of BOF
- LOB
- Buffer Overflow
- BOF
- 정보처리기사 실기
- 워게임
- wargame
- webhacking.kr
- 해킹
- Spring Framework
- Spring MVC
- 정보보안기사
- Payload
- system hacking
- 네트워크
- 웹해킹
- System
- Shell code
- Pwnable.kr
- Today
- Total
DongDD's IT
TCP - TCP UDP 특징, TCP Header, Connection 본문
TCP
TCP/UDP
-Transport Layer에 있는 protocol
Transport Layer에는 크게 UDP(User Datagram Protocol)와 TCP(Transport Control Protocol) 두 가지가 있음
TCP의 특징
1) Connection oriented (연결 지향형)
2) reliability (신뢰성)
3) Segment 사용
UDP의 특징
1) Connectionless (비연결)
2) User datagram 사용
3) Unreliability (신뢰성 보장 X)
-> 현재는 TCP를 많이 사용하는 추세
TCP에는 각 process가 sending buffer와 receiving buffer를 가지고 있음
Sending Buffer
1) Sent : 보내진 segment이지만 손실에 대비하여 저장해놓고 받은 쪽으로 부터 acknowledge를 받으면 삭제함
2) Not sent : process로 부터 Transport Layer로 data가 왔지만 아직 전송하지 않은 상태
3) Empty : 비어 있는 공간
Receiving Buffer
1) Not read : segment를 받아 저장했지만 아직 process에게 올라가지 않은 상태
2) Empty : 비어 있는 공간
TCP (Transport Control Protocol)
1) Numbering System
- Sequence Number를 사용하여 data의 순서를 결정 (0~2^32 의 값 중 임의로 선택됨)
- Sequence Number의 다음 번호로 Acknowledge를 받음
2) Segment
위의 Layer에서 내려온 Data에 20~60bytes의 Header를 붙여 Segment를 만듬
3) TCP Header
Soucre와 Destination의 Port address가 들어가고 4bytes의 Sequence number와 Acknowledge Number가 들어감
- Sequence Number : 보내는 data의 첫 번째
ex) 9000~10000의 경우 9000으로 해서 보냄
- HLEN : Header의 길이( 실제 Header 길이를 4로 나눈 값을 HLEN에 넣어 20~60bytes 표현)
- Reserved : 사용하지 않음
- 6개의 FLAG
1) URG : Urgent Pointer 사용 여부
2) ACK : Acknowledge Number 사용 여부
3) PSH : Request for push
4) RST : Reset Connection (연결 겨부)
5) SYN : Synchronize sequence numbers (연결 요청)
6) FIN : Terminate Connection (연결 취소 요청)
- Window Size : Receiver 쪽이 받을 수 있는 양 (Connection시 설정)
- Checksum : Error 검사
- Urgent Pointer : Sequence Number로 부터의 offset으로 Urgent Data를 가리킴
- 각종 Option
4) Connection Establishment
TCP에서의 Connection 방식 : Three Handshake
- 요청하는 쪽에서 SYN을 보냄
- 받는 쪽에서 SYN+ACK을 보냄
- 받은 SYN+ACK에 대한 ACK을 보냄
ACK segment는 sequence number를 사용하지 않음
SYN segment와 SYN+ACK segment는 하나의 sequence number 사용
5) Connection Termination
- Establishment와 달리 두가지 방식으로 이루어질 수 있음
① Three handshake
- 요청하는 쪽에서 FIN을 보냄
- 받는 쪽에서 FIN+ACK을 보냄
- 받은 FIN+ACK에 대한 ACK을 보냄
② Four handshake - 이러한 방법을 Half Close라고 부름
- 요청하는 쪽에서 FIN을 보냄
- 받는 쪽에서는 보낼 data가 남거나 여러 이유로 ACK만 보내고 보낼 수 있는 연결을 유지함
- 연결을 끊어도 될 상황이 오면 FIN을 보냄
- 받은 FIN에 대한 ACK을 보냄
ACK segment는 sequence number를 사용하지 않음
FIN segment와 FIN+ACK segment는 하나의 sequence number 사용
'네트워크' 카테고리의 다른 글
IPv4 Address - Classless network, slash notation, subnet rule, special address, NAT (0) | 2017.08.28 |
---|---|
IPv4 Address - Classful addressing, Network id, Cast, Classful subnet (0) | 2017.08.27 |
Network Layer - Router, Switching, Delay, Processing (0) | 2017.08.20 |
TCP - State Transition, Flow Control, Error Control (0) | 2017.08.06 |
OSI 7계층 (0) | 2017.07.23 |