TCP
server - client 서비스 요청하기 전에 3way HS를 통해서 세션을 확립.
서비스 요청/응답 끝나면 tcp 세션 종료
client server
listen
TCP syn---------------------->
<------------------------------ TCP syn+ack
TCP ack----------------------->
세션 확립
서비스 통신
HTTP 요청+TCP push--------------------->
<-------------------------------TCP ack
<------------------------------- HTTP 응답(요청에대한답장)+TCP push
TCP ack------------------------>
.....
세션 종료
TCP fin------------------------->
<--------------------------------- TCP ack
<--------------------------------- TCP fin
TCP ack------------------------->
여러 데이터를 전송하기때문에 data 번호를 붙여서 정확하게 전송되었는지 data 번호로 ack 확인
sender
data 번호 (sequence number)---------->
<------------------------------------- TCP ack(flag) , ack 번호
수신확인
data에 대한 번호를 붙여서 전송 : sequence number
상대방은 잘받았다고 ack 번호를 전송함 : ack number (수신한 seq 번호+dataseize + 1)
sender
data 번호 (sequence number)---------->답장이 안옴
(저장) data 재전송------------------------------>
sender
data 번호 (sequence number)---------->(손실)
<------------------------------------------ TCP 재전송 요청
(저장) data 재전송------------------------------>
<------------------------------------------ TCP ack
(버퍼 비움)
버퍼 size, 버퍼 변화가 생기면 tcp로 알려줌. 버퍼 size를 tcp header에 포함 (window)
-> 윈도우 슬라이드알고리즘
TCP 세그먼트 헤더 포맷 - Flags 용어정리
URG(Urgent) : 긴급 데이터 , 긴급데이터의 경우 1로 표기되어 보내진다.
Ack : 송신된 메세지가 수신측에서 정상적으로 수신되었음을 송신측으로 확인응답하는 것
Ack 번호가 유효할 경우 1로 표시, 초기 SYN이 아닌 모든 패킷은 기존 메세지에서의 응답이므로 1로 표시된다.
PSH(Push) : 서버측에서 전송할 데이터가 없거나, 데이터를 버퍼링 없이 응용프로그램으로 즉시 전달할 것을 지시할 때 사용.
Rst(Reset) : 연결 종료시 1로 표시되며, 연결 강제 종료를 위해 일방적으로 끊을 때 사용
Syn : 연결 시작용도로 사용한다. 연결이 시작될 때 SYN플래그에 1로 표시해서 보낸다.
FIN(Finish) : 연결 종료 시 1로표시. 데이터 전송을 정상적으로 마친 후 종료.
- 주소변환 프로토콜, IP(IP address)에 대한 Ethernet(Mac adderss)변환, 요청과 응답
Ping 전송 시 (4전송,4응답)
첫 번째 패킷을 보내기 전에 ARP로 MAC주소를 알아내고, 알아낸 IP-MAC 주소 정보를 기억함
=> ARP cache Table => [cmd] arp -a ( RAM에 저장 )
PC내에서 처리방법
- IP에 해당하는 MAC주소가 필요하면 ARP cache table을 확인함
- ARP Cache table에 MAC주소가 없으면 ARP 요청을 전송하여 알아옴, 있으면 가져다가 사용함
- ARP reply 답장이 오면 ARP Cache table 에 학습함(기록함)
- 시간이 지나거나, Interface가 다운되거나, 시스템의 전원이 꺼지면 사라진다
ARP Frame ( ARP 구조 )
오퍼레이션 코드 (op code)
1: ARP request 2: ARP reply 3: RARP request 4: RARP reply
대상자 IP필드에 자신의 IP 주소를 채워넣어 ARP요청을 보냄.
자신의 IP와 MAC주소를 알릴 목적으로 사용된다. GARP의 목적지 MAC주소는 브로드캐스트의 MAC주소를 사용한다
1) ping
목적지까지 경로 test, 목적지 시스템이 ip통신을 제대로 하는지 확인.
윈도우OS
ping -n 전송패킷수 -l 핑데이터사이즈 목적지_IP
-t 중지할 때까지 계속 핑 보내기 (중지하려면 ctrl+c)
-r ttl 라우터(홉) 수 지정
리눅스 유닉스
ping -c 전송패킷수 목적지_IP
2) 경로추적 tracert (윈도우) traceroute(리눅스,유닉스,장비)
참조
윈도우 tracert : ICMP 기반
리눅스/유닉스 traceroute : UDP 기반
tcp기반으로 traceroute 경로추적 : tcptraceroute
1. TCP에서 정확한(신뢰성있는) 전송을 사용하기 위해 3-way handshaking을 사용하며, 전송 시작전에 SYN패킷을 전송하여 먼저 통신이 가능한 상태인지 확인하고, 제대로 전송이 되었는지 그리고 수신자 측에서 정보를 정상적으로 받았는지 확인하며 통신을 하는게 특징이다. syn,ack를 사용
2. IP확인 : ipconfig , ipconfig /all
라우팅 테이블 : route print
경로추적 : tracert 주소
arp테이블 : arp -a
3. ARP란 IP를 기반으로 MAC주소를 찾아내는 것을 의미하며 상대방의 IP주소만 알고 MAC주소를 모를때 IP주소를 브로드캐스트로 호출하여 MAC주소를 받아내고, ARP 테이블에 저장시키는 것이다.