
0-1의 데이터를 주고받을 수 있어야 한다0-1의 데이터는 수평선과 수직선이 있는 전자기파로 0~무한대의 주파수를 가진다encoding, 아날로그 신호를 0과 1의 나열로 해석하는 decoding하드웨어적으로 구현되어있다switch가 필요!!switch와 switch의 연결이 필요router(공유기)를 사용해 스위치를 연결하면 서로 다른 네트워크 간에 전선으로 연결이 가능!! (router와 router를 계속해서 연결 가능)비트열을 붙여서 해당 비트열을 통해 시작과 끝을 확인!! (framing)ip 주소를 붙임패킷이 생성패킷을 전송패킷을 열어 목적지 ip 주소를 확인하고 연결된 컴퓨터 중 해당 ip 주소가 있는지 확인inter-network에서 목적지로 데이터를 전송하기 위해 ip 주소로 길을 찾고 다음 라우터에 데이터를 넘겨준다 (forwarding)port 번호(하나의 컴퓨터에서 동시에 실행되는 프로세스들이 겹치지 않게 가져야하는 정수 번호)를 가짐port 번호를 붙여서 보냄!!port 번호를 사용해서 최종 목적지인 프로세스까지 데이터가 도달할 수 있게하는 모듈SSH, TLS가 있다TCP/IP 소켓 프로그래밍 : 전송 계층에서 제공하는 API를 활용해 통신 가능한 프로그램을 만드는 것HTTPencoding : status code 및 정보를 붙임decoding : status code 및 정보를 빼고 데이터를 받음기존 TCP/IP : 응용 계층, 전송 계층, 인터넷 계층, 링크 계층최신 TCP/IP : 응용 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층port 번호와 목적지 port 번호를 가진다port 번호만 존재ip 주소와 목적지 ip 주소를 가진다DNS 서버에 해당 도메인의 ip 주소를 요청해서 받아온다DNS 서버는 HTTP request와 비슷하게 도메인이 담긴 쿼리를 도메인에 보내 도메인 서버가 ip 주소를 리턴!MAC
ARP(주소 해석 프로토콜)를 사용해 내 컴퓨터의 ip 주소를 MAC 주소로 변환
SYN 패킷 전송SYN 패킷과 ACK 패킷 전송ACK 패킷 전송SYN(Synchronization) : 연결 요청, 세션을 설정하는데 사용되며 초기 시퀀스 번호를 전송ACK(Acknowledgement) : 보낸 시퀀스 번호에 TCP 계층에서의 길이 또는 양을 더한 것과 같은 값을 ACK에 포함해서 전송 (받았다는 신호)3-way handshake가 TCP의 연결을 초기화할때 사용한다면 4-way handshake는 세션을 종료하기 위해 사용
FIN flag를 전송 - 클라이언트는 FIN-WAIT 상태가 된다FIN flag를 받고 ACK 확인 메시지를 전송 - 서버는 통신이 끝날때까지 기다리는 CLOSE-WAIT 상태, 클라이언트는 FIN-WAIT2 상태가 된다FIN flag를 전송 - 서버는 LAST-ACK 상태가 된다ACK를 전송 - 클라이언트는 FIN-WAIT2 → TIME-WAIT로 변경된다SYN(연결 요청 플래그) : TCP에서 세션을 성립할때 가장 먼저 전송하는 패킷으로 시퀀스 번호를 임의적으로 설정ACK(응답 플래그) : 상대방으로부터 패킷을 받았음을 알려주는 패킷FIN(연결 종료 플래그) : 세션 연결을 종료시킬때 사용되며 더 이상 전송할 데이터가 없음을 알려주는 플래그RST(연결 재설정 플래그) : 리셋을 하는 과정으로 양방향에서 동시에 일어나는 중단 작업 - 비정상적인 세션 연결 끊기PSH(밀어넣기) : 버퍼가 채워지기를 기다리지 않고 데이터를 전달URG(긴급 데이터 플래그) : 전송하는 데이터 중 긴급하게 전달할 내용이 있는 경우 사용CLOSE : 연결이 수립되기 전 상태ESTABLISHED : 연결이 수립된 상태로 데이터를 교환할 수 있는 상태FIN-WAIT : close를 호출한 측의 소켓이 진입하는 상태로 FIN을 전송 후 상대의 ACK나 FIN을 기다리는 상태FIN-WAIT2 : 자신이 보낸 FIN에 대한 ACK를 받았고 상대의 FIN을 기다리는 상태CLOSE-WAIT : close를 받은 후의 상태 - ACK 전송LAST-ACK : CLOSE-WAIT 상태를 처리 후 자신의 FIN 요청에 대한 ACK를 기다리는 상태CLOSING : 상대방의 FIN에 ACK를 보냈지만 자신의 FIN에 대한 ACK를 못 받은 상태TIME-WAIT : 모든 FIN에 대한 ACK를 받고 연결 종료가 완료된 상태, 새 연결과 겹치지 않도록 일정 시간동안 기다린 후 CLOSED
24bit의 버퍼를 생성하고 위쪽부터 바이트 데이터를 넣은 뒤 6bit단위로 잘라 Base64 테이블의 아스키 문자로 변환
Universal Unique Identifier로 네트워크 상에 존재하는 개체들을 식별하고 구별하기 위해 개발 주체가 스스로 이름을 지어 고유성을 충족시킬 수 있는 방법v1: 타임스탬프(시간) 기준v3: MD5 해시 기준v4: 랜덤값 기반v5: SHA-1 해시 기준참고자료
https://korean-otter.tistory.com/entry/OSI-7계층
https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake
https://velog.io/@averycode/네트워크-TCPUDP와-3-Way-Handshake4-Way-Handshake
https://sh-safer.tistory.com/146
https://seongonion.tistory.com/74
https://devuna.tistory.com/41#recentComments
https://velog.io/@koreanhole/UUID가-겹치면-어쩌지